zoukankan      html  css  js  c++  java
  • [笔记乱写]贪心进阶

    1.大力排序

    92B 数对:任意排序任意选取 $ ightarrow$ 限定顺序任意选取 $ ightarrow$ dp

    以两个元组为例,考虑所有情况的最优决策,并将规律转化为一类排序方式。

    exB X国的军队:可以把题意反过来,攻占一个需要$b[i]-a[i]$个士兵,且会得到$a[i]$个士兵。又因为$sum a[]$一定,所以按$b[i]-a[i]$排序即可。

    95B 格式化:考虑特殊情况,如果格式化后容量总是增大的,那么显然应该按格式化前容量从小到大排序。那么对于相反的情况,同上题一样逆向考虑,进行$rev-reformat$,不难看出此时应该按格式化后容量从大到小排序。所以分组考虑即可。

    74A 梦境:把区间按右端点排序,用set维护点,每次选能选的最靠左的那个。显然这样能使区间利用率最大。

    总结:考虑最优性、考虑可行性、逆向过程、利用率最大化、从特殊到一般、规律转化。

    2.带反悔

    64A trade:数据范围较小可以dp解决。如果贪心地考虑进行到某一天的状态,假设今天有单价为b的货物,且之前有单价为a$(a<b)$的货物,那么显然应该买a卖b。但这样只是对于当前情况的最优决策,之后可能出现与a配对结果更优的货物,所以需要带反悔。

     这里的巧妙之处在于把反悔过程直接嫁接到之前的决策上,而不用找到之前的决策点。

  • 相关阅读:
    Java之final关键字
    Java之代码块
    Java之单例设计模式
    Java之数组
    python基础知识第九篇(函数)
    css--属性
    css-选择器
    css--引入css的3种方法
    html--多选
    python-列表--处理
  • 原文地址:https://www.cnblogs.com/Rorschach-XR/p/11770960.html
Copyright © 2011-2022 走看看