NOIP复习(动态规划).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
? [NOIP复习]第三章:动态规划 分类:?NOIP?Wikioi?ACM-ICPC/蓝桥杯/其他大学竞赛?动态规划2014-09-01 08:15?458人阅读?评论(0)?收藏?举报 目录(?)[+] 一、背包问题 最基础的一类动规问题,相似之处在于给n个物品或无穷多物品或不同种类的物品,每种物品只有一个或若干个,给一个背包装入这些物品,要求在不超出背包容量的范围内,使得获得的价值或占用体积尽可能大,这一类题的动规方程f[i]一般表示剩余容量为i时取得的最大价值或最大占用体积,或者有多维状态,分别表示不同种物品的剩余量 1、Wikioi 1014 装箱问题 题目描述?Description 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。 要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。 输入描述?Input Description 一个整数v,表示箱子容量 一个整数n,表示有n个物品 接下来n个整数,分别表示这n?个物品的各自体积 输出描述?Output Description 一个整数,表示箱子剩余空间。 样例输入?Sample Input 24 6 8 3 12 7 9 7 样例输出?Sample Output 0 一道经典的背包动规,用数组f[]进行动规,f[v]=剩余容量为v时可以利用的最大体积,那么可以在每次输入一个物品体积cost时遍历剩余容量状态,当前状态的剩余容量为v时,可以选择装入物品(装入物品则当前状态可以利用的体积为f[v-cost]+cost)或不装入物品,推出动规方程:f[v]=max{f[v-cost]+cost} [cpp]?view plaincopyprint? #include?stdio.h?? #include?string.h?? ?? #define?MAXN?30000?? ?? int?f[MAXN];?//f[i]=剩余体积为i时装入物品的最大体积?? ?? int?max(int?a,int?b)?? {?? ????if(ab)?return?a;?? ????return?b;?? }?? ?? int?main()?? {?? ????int?v,n,cost;?? ????scanf(%d%d,v,n);?? ????for(int?i=1;i=n;i++)??? ????{?? ????????scanf(%d,cost);?? ????????for(int?j=v;j=cost;j--)?? ????????????f[j]=max(f[j],f[j-cost]+cost);?? ????}?? ????printf(%d\n,v-f[v]);?? ????return?0;?? }?? ? 2、Wikioi 1068 乌龟棋 题目描述?Description 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数)。棋盘第1格是唯一 的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。 …… 1 2 3 4 5 ……N 乌龟棋中M张爬行卡片,分成4种不同的类型(M张卡片中不一定包含所有4种类型 的卡片,见样例),每种类型的卡片上分别标有1、2、3、4四个数字之一,表示使用这种卡 片后,乌龟棋子将向前爬行相应的格子数。游戏中,玩家每次需要从所有的爬行卡片中选择 一张之前没有使用过的爬行卡片,控制乌龟棋子前进相应的格子数,每张卡片只能使用一次。 游戏中,乌龟棋子自动获得起点格子的分数,并且在后续的爬行中每到达一个格子,就得到 该格子相应的分数。玩家最终游戏得分就是乌龟棋子从起点到终点过程中到过的所有格子的 分数总和。 很明显,用不同的爬行卡片使用顺序会使得最终游戏的得分不同,小明想要找到一种卡 片使用顺序使得最终游戏得分最多。 现在,告诉你棋盘上每个格子的分数和所有的爬行卡片,你能告诉小明,他最多能得到 多少分吗? 输入描述?Input Description 输入的每行中两个数之间用一个空格隔开。 第1行2个正整数N和M,分别表示棋盘格子数和爬行卡片数。 第2行N个非负整数,a1a2……aN ,其中ai表示棋盘第i个格子上的分数。 第3行M个整数,b1b2……bM ,表示M张爬行卡片上的数字。 输入数据保证到达终点时刚好用光M张爬行卡片,即N - 1=∑(1-M) bi 输出描述?Output Description 输出一行一个整数 样例输入?Sample Input 13?8 4?96?10?64?55?13?94?53?5?24?89?8?30 1?1?1?1?1?2?4?1 样例输出?Sample

文档评论(0)

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

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

1亿VIP精品文档

相关文档