算法合集之《部分贪心在信息学竞赛中的应用》.ppt
《算法合集之《部分贪心在信息学竞赛中的应用》.ppt》由会员分享,可在线阅读,更多相关《算法合集之《部分贪心在信息学竞赛中的应用》.ppt(25页珍藏版)》请在三一办公上搜索。
1、部分贪心在信息学竞赛中的应用,北京市清华附中 高逸涵,引言,引入众所周知,贪心算法是一个在信息学竞赛中应用广泛的高效算法。但是有的时候,由于小规模针对性数据的存在,使得贪心算法不能得到正确的结果。如何解决这一问题呢?部分贪心,顾名思义,就是在问题的局部采用贪心算法,而在其他部分采用其他算法。,部分贪心,引言,为什么要“部分”贪心?当问题的特殊情况普遍较小的时候,对于边界数据采用其他算法处理可以有效的回避特殊情况的讨论。部分的普通算法对于总体时间复杂度影响并不大。部分的贪心可以极大的提高算法的时间效率。,引言,举个例子:我们要最优化目标函数,为了求得目标函数的最小值,我们可以首先贪心的求出趋势函
2、数的最小值,然后在其左右寻找目标函数的最小值。,例题,例题1骆驼例题2Cow Relays,例题1骆驼,有p个人带着x个小包y个大包穿越沙漠每匹骆驼可以背的物体只能是下列四种组合之一:不超过3个小包;不超过2个大包;1个人与不超过2个小包;1个人和1个大包。问最少需要多少骆驼?数据范围:1=p,x,y=1000000000,例题1骆驼,首先,当所有人所带的包的种类确定以后,剩下需要的骆驼数目可以直接算出来。所以我们需要求的只是有多少个人带大包,多少个人带小包。很容易得到如下公式:(p,x,y分别为人,小包,大包数)但由于数据规模巨大,直接枚举显然行不通,需要另想办法。,例题1骆驼,由于取整运算
3、符的存在,导致直接数学计算变得比较困难。但是从整体趋势上来看,i的增加显然有利于ans的减小。那么按照贪心思想,我们需要尽量让人带着小包。,例题1骆驼,我们很容易得到一个贪心算法:如果当前小包的个数=2并且还有人是空闲的,那么令这个人带着小包,否则令这个人带大包。很不幸,这个算法是错误的(x=3,y=3,p=1)。如何改进?,正确性?,部分贪心!,例题1骆驼,当人数和小包的数量都充分大的时候,令人带小包显然是没错的。经过验证,人数和小包数=20的时候,一定存在一个最优解使得存在一个骆驼带着人和小包。算法的正确性采用调整法很容易证明。而当人数和小包数有一个小于20时,可以采用枚举法解决问题。,例
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 部分贪心在信息学竞赛中的应用 算法 部分 贪心 信息学 竞赛 中的 应用
链接地址:https://www.31ppt.com/p-6012051.html