3月5-第九次机试课记录

贪心

总结和反思

  • 什么时候可以用贪心,什么时候用dp,什么时候用搜索,什么时候用暴力这个需要积累下

    • TODO
    • 贪心和暴力枚举组合,能贪心的时候贪心,不能贪心的时候就都试一下
  • 贪心的思路

    • 寻找贪心策略
      • (优化解空间)可以类似搜索,先暴力枚举一下当前的选择,想下怎么想对当前的选择排序,从而选出最优解,从而确定贪心的策略
      • (从解空间中抽取答案)配合淘汰策略,在排序的集合中选择最优解
    • 验证贪心正确性
  • 贪心的几种认识

    • 一种是思维题,就是考你对当前问题模型的贪心的最优解,然后模拟实现出来(重要的思维+模拟)
    • 几种可以抽象对照贪心模型
      • 区间贪心
        • 一维(对边的排序-->按找顺序进行判断-->满足条件的边-->维护限制/进行对于操作)
          • 尽可能找多的边来覆盖
          • 尽可能找少的边来覆盖
          • 尽可能覆盖的多
          • 尽可能让边重合
        • 二维
          • 降维处理
          • 联系坐标系
      • 坐标系下贪心

题号

  • PIPIOJ 1016(简单贪心)

  • PIPIOJ 1208(简单贪心)

  • PIPIOJ 1253(简单贪心)

  • PIPIOJ 1125(区间贪心)

  • PIPIOJ 1121(区间贪心)

  • PIPIOJ 1172(区间贪心)

  • PIPIOJ 1323(区间贪心)

  • PIPIOJ 1028 可乐(思维+贪心)

  • PIPIOJ 1255 最大容量和(思维+贪心)

  • PIPIOJ 1143 堆石子(优先队列+贪心)

  • PIPIOJ 1386 程序员PIPI(优先队列+区间贪心)

  • PIPIOJ 1120 木匠PIPI (作业)

  • PIPIOJ 1127 司机问题(作业)

分析

  • 1016

    • 贪心就是尽可能让在车能到下一个加油站的前提下把油用光
  • 1208

    • 这题一开始看错了,还以为是和之前一天使用1034单调队列求最小字典序的子序列问题,区别在于这题没有必要按序,所以直接排序选择就好了
  • 1125

    • 区间贪心,尽可能的多选区间个数填充目标
      • 按后点升序排序
      • 从前面选择满足条件的添加
  • 1121

    • 区间贪心,尽可能的少选区间填充目标
      • 按前点和后点都升序排序
      • 从前面循环所有满足当前条件的边,在其中选择最右边的边,进行添加
      • 如果不满足条件再添加新边
  • 1172

    • 这题就是区间的转化,区别就是区间是double类型了
    • 区间贪心,尽可能的少选
      • 按区间前点和后点升序排序
      • 从前往后,选择满足条件就跳过,不满足,新增边
  • 1323

    • 区间贪心,尽可能的多选边来构成较少的区间个数
      • 按前点和后点升序排序,对于满足条件的维护限制,不满足的新增区间(区分1121,都是类似,1121要求选择最少边来覆盖,而1323选择知道覆盖了多少,不在乎选择边的多少,所以1121在选择边的时候,对于所有满足条件的边,只能选择最优的一个,而1323只要满足条件,就可以都要)
  • 1028

    • 贪心,这题随着条件的变化,贪心策略需要变化(能贪心的贪心,不确定贪心的暴力枚举)
      • 当v是大于可乐的容量,就选择性价比最高的买
      • 当小于的时候,不确定是多花点钱多买一点可乐和去买性价比更低的花销大还是小,这题使用了暴力枚举的方式去寻找最优解(暴力写的很优雅)
  • 1255

    • 这题贪心的思路我想错了几次,都没仔细论证贪心的策略是不是对的就写了,浪费了很多时间
      • 贪心就是选择所有满足的条件的木板,如果按小到大排序,在剩下木板足够组合成为新的桶的条件下,选择尽可能让小的抱团,从而让长的木板发挥更大的作用
  • 1143

    • 优先队列
  • 1386

    • 多条轴进行区间贪心,选择尽可能少的轴数
      • 按前点和后点降序排序,使用优先队列来维护不同轴的限制
      • 当满足条件,就更新轴的限制,不满足,就添加新轴
  • 1120

    • 这题可以转化为二维坐标系的贪心或者理解为二维的贪心
      • 这题和1386有点想,就是区别在于大小不好确定,所以我卡了这半天
      • 如果从二维贪心出发,确定一个点,降维成为一维,在每一个维度都进行贪心,合并后也是全局的贪心,更好理解
posted @ 2020-03-05 20:32  fabe2ry  阅读(198)  评论(0编辑  收藏  举报