NOIP中的贪心.pptx

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NOIP中的贪心

NOIP中的贪心 Greedy Algorithm;定义;是不是so easy;注意;能贪么?;看看题吧;NOIP2002均分纸牌;是不是想大吼一句:“这是贪心?” 没错这就是,好好想想吧 接下来我要第一次试用ppt的SmartArt功能 你们先想着 ;NOIP1999拦截导弹;话说这是我们的第一道贪心题 当时直接理解错题意 然后呵呵 所以如果理解对的话,很容易能想到贪心 对于每套系统,只需存它拦截的最后一枚导弹的高度 如果新的导弹比所有系统能拦截的高度都高,那就再来一套 否则选择能拦截该导弹的高度最低的系统 代码很容易,不再cv 当然,此题也可以动规解决,那就不是我的事情了;NOIP2004 合并果子;【输入文件】 输入文件fruit.in包括两行,第一行是一个整数n(1 <= n <= 10000),表示果子的种类数。第二行包含n个整数,用空格分隔,第i个整数ai(1 <= ai <= 20000)是第i种果子的数目。 【输出文件】 输出文件fruit.out包括一行,这一行只包含一个整数,也就是最小的体力耗费值。输入数据保证这个值小于231。 【样例输入】 3 1 2 9 【样例输出】 15 【数据规模】 对于30%的数据,保证有n <= 1000; 对于50%的数据,保证有n <= 5000; 对于全部的数据,保证有n <= 10000。;显然(一个略强大的词),如果取每次最小的两堆合并,体力值一定最小 当然要快排 最小的两堆合并后,不一定最小,所以,总不能每次都快排吧? 如果每次快排,效率(n*n(logn)), 五组 当然,也可以再向后扫一遍,然后改变数组 但如果有多个小的,显然,稍快但很容易错 如果从大到小存,从后向前扫呢 这样每次扫描都可以同时向前移位,同时由于已排过序,只要找到一个大于合并后果子数的就可以跳出,效率大大提高 ;一道坑爹的;【输入格式】 从文件 multiset.in 中读入数据。第一行为一个整数??,描述最终集合的大小。第二行为??个非负整数,为最终集合的每一个元素。 【输出格式】 输出到文件 multiset.out 中。 输出唯一一行,Alice 最少玩的轮数。 【样例输入】 Sample Input 1 1 0 Sample Input 2 4 1 1 1 1 Sample Input 3 5 0 3 0 3 0 ;对于每个数,有0或非0两种情况 对于0,每次操作中将0成对合并 对于非0数,每次操作同时减一 于是对于所有的数,按数值统计出现次数 n减到0需要n次,减去之前的总次数,再算剩余多少0 直到最大的数,再计算剩余的0 计算剩余所有0合并需要的次数 加上之前的次数,即为答案;可是可是,怎么确定怎么贪心呢;比如一些模板;比如;贪心法的求解过程? ??用贪心法求解问题应该考虑如下几个方面: (1)候选集合C:为了构造问题的解决方案,有一个候选集合C作为问题的可能解,即问题的最终解均取自于候选集合C。 (2)解集合S:随着贪心选择的进行,解集合S不断扩展,直到构成一个满足问题的完整解。 (3)解决函数solution:检查解集合S是否构成问题的完整解。 (4)选择函数select:即贪心策略,这是贪心法的关键,它指出哪个候选对象最有希望构成问题的解,选择函数通常和目标函数有关。 (5)可行函数feasible:检查解集合中加入一个候选对象是否可行,即解集合扩展后是否满足约束条件。例如,在付款问题中,可行函数是每一步选择的货币和已付出的货币相加不超过应付款。;贪心法的一般流程 Greedy(C)? //C是问题的输入集合即候选集合 { ??? S={ };? //初始解集合为空集 ??? while (not solution(S))? //集合S没有构成问题的一个解 ??? { ?????? x=select(C);??? //在候选集合C中做贪心选择 ?????? if feasible(S, x)? //判断集合S中加入x后的解是否可行 ????????? S=S+{x}; ????????? C=C-{x}; ??? } ?? return S; ;贪心法的基本要素 ?? ? ?对于一个具体的问题,怎么知道是否可用贪心算法解此问题,以及能否得到问题的最优解呢?这个问题很难给予肯定的回答。 ????? 但是,从许多可以用贪心算法求解的问题中看到这类问题一般具有2个重要的性质:贪心选择性质和最优子结构性质。 子问题:假设为了解决某一优化问题,需要依次作出n个决策D1,D2,…,Dn,对于任何一个整数k,1 < k < n,以Dk作为问题的初始状态,来进行以后的决策,这样的问题就成为是原问题的一个子问题。 1.贪心选择性质 ????? 所谓贪心选择性质是指所求问题的整体最优解可以通过一

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档