一、什么是贪心

贪心算法嘛、、、

就是在对某个问题求解时,总是做出在当前看来是最好的选择

In other wors,并不是从整体最优上加以考虑,而是在获得某种意义上的局部最优解

二、贪心算法的适用前提

局部的最优解能导致最后整体的最优解,即局部的最优解不受该部分以外的东西的影响

对于贪心算法,我们需要证明:整个问题的最优解一定由在贪心策略中存在的子问题的最优解得来的

实际上,能用贪心算法的问题很少,大部分看上去能用贪心算法去做的题目,其实都得不到最优解T T(这时候就需要运用动态规划了)

而看上去不能贪心的问题经过转化,反而可以运用贪心求解(额这个…)

三、贪心算法的基本思路:

(1)问题转化

(2)把求解的问题分成若干个子问题

(3)对每一子问题求解,得到子问题的局部最优解

(4)把子问题的解局部最优解合成原来解问题的一个解

↑上面那些@#%^*¥…&*#¥%@是不是太烦了。。。谁不懂”贪心”这两个字啊≥v≤~

所以在实际问题中进行分析即可!

(概括为两句话:贪心算法就是按照字面意思求局部最优;但局部最优不一定是整体最优,故需要证明成立)

四、简单贪心算法例题

BZOJ1689 [Usaco2005 Open] Muddy roads 泥泞的路

给一个长度为N的格子,一些格子有水。现在有长度为L的东西(比如,木板)覆盖,问至少要用几木板才能把水坑都盖住。

解法是:每个木板在当前满足条件的情况下尽量往后放。

证明:假设当前i有水,i-1没有水,因为长度是固定的,那么显然从i放,由于从i-1放木板有可能会少盖住一个后面的水池。

于是模拟怎么放木板即可。

另两题:

BZOJ2014 [Usaco2010 Feb]Chocolate Buying

BZOJ3544 [ONTAK2010]Creative Accounting

五、进阶版贪心算法例题

BZOJ1658 [Usaco2006 Mar]Water Slides 滑水

一维坐标轴上有n个点,有些点之间有单向滑梯,现在要滑完所有滑梯仅一次,问走的路最少的解法。(n = 10000)

一开始建立的是网络流模型:

(1)把点分成出度>入度和入度>出度两种

(2)跑一遍网络流

然后会发现由于n很大,会TLE,于是进行改进:

发现两条滑梯交叉滑一定没有不交叉滑来得好(就是简单地贪心思想)

于是对两类点排序,直接一个一个配对答案一定是最小的。

另一题:

BZOJ1367 [Baltic2004]sequence

六、贪心的更多例题

BZOJ1046 [HAOI2007]上升序列

BZOJ1691 [Usaco2007 Dec]挑剔的美食家

BZOJ1150 [CTSC2007]数据备份Backup

七、More about贪心

贪心作为一类重要的信息学算法,一般并不是单独使用的

有时会利用堆来优化,也可能配合hash甚至平衡树进行问题的求解

当然也可以作为一个算法的一部分(如Dijkstra),或者”部分贪心思”

当然这种看似简单、其实内容丰富的算法就可以被出在NOIp中。。。。。。

noip知识点总结之--贪心的更多相关文章

  1. Noip知识点备考

    作为一个oier,适当的整理是有必要的.蒟蒻根据自己的理解,筛选出考noip应当掌握的知识点.可能后期还有解题思路和模板,先挖个坑慢慢补呗. 60级张炳琪Noip知识点总结 可能是本人比较弱,写的内容 ...

  2. NOIp知识点复习——最短路计数

    $Mingqi\_H$ NOIp 2017考挂了...gg 重新开始好了. 计划明年2月24号前复习完所有的NOIp知识点(毕竟很不熟练啊),之后到七月底前学习完省选的东西(flag?). 从现在开始 ...

  3. noip知识点总结之--欧几里得算法和扩展欧几里得算法

    一.欧几里得算法 名字非常高大上的不一定难,比如欧几里得算法...其实就是求两个正整数a, b的最大公约数(即gcd),亦称辗转相除法 需要先知道一个定理: gcd(a, b) = gcd(b, a  ...

  4. noip推荐系列:汽艇[贪心]

    [问题背景] 一天sxc,zsx,wl到gly坐汽艇,本来和其他的人约好了一起去,结果被放了鸽子,3人便只有一人负担x元去坐汽艇(很贵哦).坐了才发现如果汽艇上人多了位置就不宽敞,就不好玩了.而3个人 ...

  5. NOIP知识点

    基础算法 贪心 枚举 分治 二分 倍增 高精度 模拟 图论 图 最短路(dijkstra.spfa.floyd) 最小生成树(kruskal.prim) 并查集 拓扑排序 二分图染色 Tarjan 树 ...

  6. NOI&&NOIP知识点集萃

    更新日志 \(update:2019-3-4\) 更新了自为风月马前卒的后缀数组(省选不到一个月了,我才开始学后缀数组怕是要凉凉) \(update:2019-2-21\) 更新了一篇李超线段树的讲解 ...

  7. 2018.09.08 NOIP模拟eat(贪心)

    签到水题啊... 这题完全跟图论没有关系. 显然如果确定了哪些点会被选之后顺序已经不重要了.于是我们给点按权值排序贪心从大向小选. 我们要求的显然就是∑i(a[i]−(n−i))" role ...

  8. 2018.08.18 NOIP模拟 travel(贪心)

    Travel 题目背景 SOURCE:NOIP2015-SHY4 题目描述 小 A 要进行一次旅行.这回他要在序号为 1 到 n 的 n 个城市之间旅行.这 n 个城市之间共有 m 条连接两个城市的单 ...

  9. NOIp 2018 货币系统 贪心

    题目描述 在网友的国度中共有 nnn 种不同面额的货币,第 iii 种货币的面额为 a[i]a[i]a[i],你可以假设每一种货币都有无穷多张.为了方便,我们把货币种数为 nnn.面额数组为 a[1. ...

随机推荐

  1. C# 线程(一)

    From : http://www.cnblogs.com/miniwiki/archive/2010/06/18/1760540.html 文章系参考转载,英文原文网址请参考:http://www. ...

  2. hdu 3054 Fibonacci 找循环节的公式题

    Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Proble ...

  3. C++ ASSERT() 断言机制

    C++ ASSERT() 断言机制 ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行.如果表达式不为0,则继 ...

  4. HDU 1754

    成段更新 easy #include <stdio.h> #include <string.h> #include <math.h> #include <io ...

  5. Codeforces723E One-Way Reform【欧拉回路】

    题意:给你n点m边的图,然后让你确定每条边的方向,使得入度=出度的点最多 . 度数为偶数的点均能满足入度 = 出度. 证明:度数为奇数的点有偶数个,奇度点两两配对连无向边,则新图存在欧拉回路,则可使新 ...

  6. Ubuntu Server14.04 32位安装odoo8.0简单方法

    一.wget -O - https://nightly.odoo.com/odoo.key | apt-key add - 二.echo "deb http://nightly.odoo.c ...

  7. 【Todo】Java要学的一些比较好的框架和系统

    commons-pool apache的通用线程池 可以看看这篇文章:<使用common-pool实现的一个简单的线程池> Jmeter 性能测试 Squid Link

  8. git使用技巧

    git使用技巧 转载自:http://172.17.144.8/iceway.zhang/shares/201604/201604_git_tips.md.html 我们在工作中几乎每天都会用到git ...

  9. 使用升级助 升级了win10,黑屏,无桌面 解决方案

    使用U盘重装即可. 事实证明,win10升级助手实在不咋地 优待又2: (1)保留原win7系统,有后悔药: (2)原系统的软件可用: 缺点: (1)装得慢,一上午: (2)开机慢,三分半 (3)开机 ...

  10. QQ等级图标排名说明_QQ等级表,QQ最高等级(皇冠) qq到一星要5天

    从2007年11月29日中午12:00开始,在不改变原有计算方式的情况下,加速QQ会员等级升级.QQ会员用户在原有通过每天在线2小时累积活跃天数来获取相应QQ等级增长的基础上,还可以根据QQ会员VIP ...