zoukankan      html  css  js  c++  java
  • 2016.8.25 贪心

    由于博客是写给自己看的,所以用到了大量简写题也没有写出来,有需要的可以联系我要题目的pdf,本章ppt,讲义以及题目测试数据,由于上传不方便我就不上传了,联系邮箱SindarDawn@163.com

    贪心

    一.基本概念:

    1.定义:每次得到局部最优解,进而推导出问题的解;

    2.含义:从初始解出发,

    3.要素:完全无后效性:当前任意选择都可以通向后来的所有选择(反例:方格取数;正例:部分背包),需要严格数学证明(考虑全面情况);或唯一情况性:最好的情况只有一种可能,如hanoi,均分纸牌(移动纸牌使均衡);

    4.执行:在当前选择中完全不受干扰选最优;

    5.对比:与递推比,贪心要做选择,而递推只遵照式子;

    6.注意:一定不要急,先证明正确性,审慎一个字一个字地读和理解,不能只是走过场;

    二.常见模板:

    1.计数次数类问题:

    特点:先或后的计算次数(改变结果的程度)更多,可以证明正确性;

    举例:排队打水,合并果子,运输(见后);

    2.单一可能性问题:

    特点:只有一种可能性;

    举例:均分纸牌,hanoi;

    3.首位决定类问题:

    特点:在控制范围内要先使第一位(某个东西)达到最大,可以完全决定数的大小(结果的大小);

    举例:删数问题,最大整数(数字的顺序);

    4.不会更差类:

    特点:选择某种情况剩下的选择比另一种至少不会更差;

    举例:拦截导弹;(选择最小的变得更小到定值(若不到定值就不行了)),整数区间(覆盖所有区间的区间);

    5.满足某条件选最小类:

    特点:在满足条件的情况下选择最小的,这样至少下一次能满足条件的更多;

    举例:活动选择(给定开始和结束),拦截导弹,整数区间(按结束排序从结束模拟或从开始排序从开始模拟)零件分组(拦截导弹变形,一要素排序);

    6.排序不等式类问题:

    特点:易写难想,很多涉及到“比较平均”或“尽量接近”的问题都会用到;

    举例:纪念品分组(都小于某标准的最少分组数)

    7.找拐点类问题:

    特点:要在即将下降时脱手,即将上升时买入以确定利益最大化;

    举例:美元汇率(美元马克互换);

    8.有序归并类问题:

    特点:合并果子,运输等新增数据是有序的题目的优化;

    举例:合并果子,运输(相加除以K);

    9.每行选最优类问题:

    特点:思路简单但难想到难证明正确性,和DP最大的区别就是不管选什么后面的都可以选;

    举例:最佳游览线路;

    10.一直选最优类问题:

    特点:难证明正确性,一直选最优,被某些条件限制也要继续选第二优,不是完全无后效性,但仍然适用贪心;

    举例:营养膳食(某种事物有限制);

    三.上手例题:

    1.排队打水 小黄2.6.3;

    题意:全部等待时间:每个人都等待时间相加;要使全部等待时间更短;

    分析:很容易发现在前面的人被计算的次数更多,所以这其实是一道披着尽量平均的壳的计算次数问题,最小的在前面保证了计算次数少,先往小的地方放保证了计算次数一定是双元素反向不严格递增;

    2.均分纸牌 小黄2.6.4;

    题意:使不均匀纸牌变均匀的相邻移动次数;

    分析:如果没有注明相邻还会难一点,但注明相邻以后,从边上开始模拟,要得到最优情况则只有一种选择,所以是完全模拟,这种题一开始看起来好像不是很有规律,但从边界着手就可以看出来众多的选择其实最终只归于一种;

    3.删数问题 小黄2.6.5;

    题意:删除几个数使剩下的最大;

    分析:很显然的首位决定问题,很容易想到在控制范围内留最大但程序略显冗杂,仔细分析以后会发现其实是n步得到单调递减数列,考虑多种情况后简化成了几种操作,这种思考方式考试时一定要多借鉴;写程序方法也要多训练;

    4.活动选择 小黄2.6.7;

    题意:安排的尽量多;

    分析:这道题和零件分组一样,是拦截导弹的变式,但这道题的思考难度实在是大一点,因为它的另一元素不仅有排序的职责,还有再次判断的职责,而排序,其实也可以说是使得比较更轻松的一种手段,最重要的就是”在满足条件情况下下一次能通过的最多“这句话,以及理解导弹拦截时“后来”其实就是另一要素;熟练掌握模板,理解思路;

    5.整数区间 小黄2.6.8

    题意:覆盖全部集合的非连续集合元素最少数;

    分析:拦截导弹的终极变式,“不会更差”原理的灵活运用,没有什么好说的,熟练模板理解思路;

    6.最大整数 小黄练习2

    题意:将多位数连接成能组成的最大的多位数;

    分析:这道题是很显然的首位决定类,但是在不同长度的数字处理时会有问题,需要对所有可能出现的情况进行分析最后确定方案,最后还需要一定的字符串处理能力,这种字符串处理方式也需要被灵活掌握;

    7.纪念品分组 小黄练习3;

    题意:最多两个一组,不能超过某值;

    分析:典型的尽量平均类问题,最多两个一组且无操作,所以应用排序不等式,排序不等式要求熟练掌握;

    8.美元汇率 小黄练习5;

    题意:即将跌前换,即将涨前换,且头尾币类确定;

    分析:典型的找拐点,熟练掌握找拐点的与前两个趋势比较的方法并且掌握边界处理方法;

    9.最佳游览路线 小黄练习8;

    题意:在每一行移动取最大;

    分析:完美地体现了暴力的完全无后效性,貌似很复杂其实极其简单;

    10.营养膳食 小黄练习9;

    题意:每个食物有分组,每组有限制;

    分析:看似有什么分组背包之类乱七八糟的,事实证明其实是我的思维体系还没有清晰完善,其实就是一道很经典的一直取最优类问题,方法要求熟练掌握;

  • 相关阅读:
    轻量级web富文本框——wangEditor使用手册(3)——如何自定义配置菜单
    轻量级web富文本框——wangEditor使用手册(2)——扩展一个“缩进”功能
    轻量级web富文本框——wangEditor使用手册(1)——基本应用 demo
    由于没有远程桌面授权服务器可以提供许可证,远程会话被中断。
    java class 文件
    java类型生命周期
    (转)LSTM神经网络介绍
    (转)Skyline timeseries异常判定算法
    (转)isolation forest进行异常点检测
    (转)颜色直方图, HSV直方图, histogram bins
  • 原文地址:https://www.cnblogs.com/SindarDawn/p/5805328.html
Copyright © 2011-2022 走看看