2022年2022年历届NOIP搜索算法全集 .pdf
《2022年2022年历届NOIP搜索算法全集 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年历届NOIP搜索算法全集 .pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、历届 NOIP 搜索算法全集转自:oifans用动态规划来解背包问题在历届 NOIP 竞赛中,有 4 道初赛题和5 道复赛题均涉及到背包问题,所谓的背包问题,可以描述如下:一个小偷打劫一个保险箱,发现柜子里有N 类不同大小与价值的物品,但小偷只有一个容积为M 的背包来装东西, 背包问题就是要找出一个小偷选择所偷物品的组合,以使偷走的物品总价值最大。如有 4 件物品,容积分别为:3 4 5 8 对应的价值分别为:4 5 7 10 小偷背包的载重量为:12 则取编号为1 2 3 的物品,得到最大价值为16。算法分析:如果采用贪心法,则先取价值最大的10,消耗了容积8,下面只能取容积为4的物品,得到
2、价值5,这样总价值是15,这不是最优解,因此贪心法是不正确的。采用穷举法,用一个B 数组来表示取数的标记,当B=0 时表示第i 件物品不取,当B=1 时表示第 i 件物品已取,初始化全部取0,以下算法是从后面的物品开始取起,通过B 数组的取值把 15 种取法全部穷举出来,价值MAX 初始化为0。B0 B1 B2 B3 B4 0 0 0 0 0 初始化 0 0 0 0 1 取第 4 件物品,容积为8,不超,价值为10,将 MAX 替换为 10 0 0 0 1 0 取物品3,容积为5,不超,价值为7,不换0 0 0 1 1 取物品3、 4,容积为 13,超0 0 1 0 0 取物品2,容积为4,不
3、超,价值为5,不换0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 1 1 0 这是最佳方案0 1 1 1 1 1 0 0 0 0 当 B0 1 时停止, B0称为哨兵生成 B 数组中数据的方法如下:fillchar(b,sizeof(b),0); while b0=0 do begin j:=n; while bj=1 do dec(j); bj:=1; for i:=j+1 to n do b:=0; end;小结:以上每件物品只能取1 件,所以取法只有0 和 1 两种情况,我们称之为0、1 背包,算法的时间复杂度为O(2N) ,在 1 秒内 N 只能做到20。例 1:选
4、数( NOIP2002 初中组复赛第2 题)问题描述 :已知n 个整数x1,x2, ,xn ,以及一个整数k(kn) 。从 n 个整数中任选k 个整数相加, 可分别得到一系列的和。例如当n=4,k3,4 个整数分别为3,7,12,19 时,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - 可得全部的组合与它们的和为:3712=22 371929 71219 38 3121934。现在,要求你计算出和为素数共有多少种。例如上例,只有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年历届NOIP搜索算法全集 2022 年历 NOIP 搜索 算法 全集
限制150内