• 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有点想,就是区别在于大小不好确定,所以我卡了这半天
        • 如果从二维贪心出发,确定一个点,降维成为一维,在每一个维度都进行贪心,合并后也是全局的贪心,更好理解
  • 相关阅读:
    Springboot 配置Slf4j + Logback
    一步一步创建SpringCloud项目(二)—— 使用feign和ribbon调用微服务
    一步一步创建SpringCloud项目(一)——创建项目父工程、Eureka
    rabbitmq使用笔记
    docker部署rabbitmq
    Maven pom文件中dependency scope用法
    MySQL事务隔离级别总结
    docker安装redis
    RabbitMQ的消息确认机制
    centos7.6 下安装docker,docker compose
  • 原文地址:https://www.cnblogs.com/faberry/p/12422503.html
Copyright © 2020-2023  润新知