收藏 分享(赏)

动态规划习题精讲.doc

上传人:精品资料 文档编号:10986453 上传时间:2020-01-30 格式:DOC 页数:52 大小:490KB
下载 相关 举报
动态规划习题精讲.doc_第1页
第1页 / 共52页
动态规划习题精讲.doc_第2页
第2页 / 共52页
动态规划习题精讲.doc_第3页
第3页 / 共52页
动态规划习题精讲.doc_第4页
第4页 / 共52页
动态规划习题精讲.doc_第5页
第5页 / 共52页
点击查看更多>>
资源描述

1、信息学竞赛中的动态规划专题哈尔滨工业大学 周谷越【关键字】动态规划 动机 状态 典型题目 辅助方法 优化方法【摘要】本文针对信息学竞赛(面向中学生的 Noi 以及面向大学生的 ACM/ICPC)中的动态规划算法,从动机入手,讨论了动态规划的基本思想和常见应用方法。通过一些常见的经典题目来归纳动态规划的一般作法并从理论上加以分析和说明。并介绍了一些解决动态规划问题时的一些辅助技巧和优化方法。纵观全文可知,动态规划的关键在于把握本质思想的基础上灵活运用。【目录】1.动态规划的动机和基本思想1.1.解决重复子问题1.2.解决复杂贪心问题2.动态规划状态的划分方法2.1.一维状态划分2.2.二维状态划

2、分2.3.树型状态划分3.动态规划的辅助与优化方法3.1.常见辅助方法3.2.常见优化方法4.近年来 Noi 动态规划题目分析4.1 Noi2005 瑰丽华尔兹4.2 Noi2005 聪聪与可可4.3 Noi2006 网络收费4.4 Noi2006 千年虫附录 参考书籍与相关材料信息学竞赛中的动态规划专题第 1 页/共 50 页1.动态规划的动机和基本思想首先声明,这里所说的动态规划的动机是从竞赛角度出发的动机。1.1 解决重复子问题对于很多问题,我们利用分治的思想,可以把大问题分解成若干小问题,然后再把各个小问题的答案组合起来,得到大问题的解答。这类问题的共同点是小问题和大问题的本质相同。很

3、多分治法可以解决的问题(如 quick_sort,hanoi_tower 等)都是把大问题化成2 个以内的不相重复的小问题,解决的问题数量即为(log 2n / k)。而考虑下面这个问题:USACO 1.4.3 Number Triangleshttp:/122.139.62.222/problem.php?id=1417【题目描述】考虑在下面被显示的数字金字塔。写一个程序来计算从最高点开始在底部任意处结束的路径经过数字的和的最大。每一步可以走到左下方的点也可以到达右下方的点。73 88 1 02 7 4 44 5 2 6 1在上面的样例中,从 7 到 3 到 8 到 7 到 5 的路径产生了

4、最大和:30。【输入格式】第一个行包含 R(1 FI-1,J-1 ThenFI,J = FI-1,J + AI,JElseFI,J = FI-1,J-1 + AI,J接下来我们从理论上来讨论使用动态规划的条件。对于一种状态划分的方法来说,状态只与状态本身的性质有关,而与如何达到该状态等其他条件一概无关的性质叫做无后效性。由于存在无后效性,决策只能从决策本身的性质来确定,使得某一阶段的状态只与它所在阶段的前一阶段的状态有关。可以看出,存在无后效性是应用动态规划的前提条件。而考虑动态规划的正确性时,问题则需要满足最优子结构。所谓最优子结构,即当前一阶段的状态最优时,通过状态转移方程得到的状态也能达

5、到最优。理论上看,无后效性和最优子结构是使用动态规划时的两个基本条件,而具体应用动态规划时更多凭借的是经验。下面再引出一道经典题目做一下分析:信息学竞赛中的动态规划专题第 3 页/共 50 页ACM/ICPC Shanghai2001 Skiinghttp:/122.139.62.222/problem.php?id=1862【题目描述】滑雪是一项很受欢迎的体育运动,为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡。我们想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子:1 2 3 4 516 17 18 19 615 24

6、 25 20 714 23 22 21 813 12 11 10 9我们可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为 24-17-16-1。当然 25-24-23-.-3-2-1 更长。事实上,这是最长的一条。【输入格式】输入的第一行表示区域的行数 R 和列数 C(1 0 ThenReturn ArrI,JInt P, Ans = 0For P = 1 to 4 DoIf (I+DXP,J+DYP) In Map) And (HI+DXP,J+DYP HI,J) ThenIf (Ans Ti+1TK(1iK) 。你的任务是,已知所有 N 位同学的

7、身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。【输入格式】第一行是一个整数 N(2N10 6),表示同学的总数。第一行有 n 个整数,用空格分隔,第 i 个整数 Ti(130Ti 230)是第 i 位同学的身高(厘米)。【输出格式】只包含一个整数,就是最少需要几位同学出列。【样例输入】8186 186 150 200 160 130 197 220【样例输出】4首先只考虑左半部分的合唱队型,这种题目类型叫做最长上升子序列问题(LIS ) ,最常规的算法是设 FI表示前 I 个数字中(必须包含 AI)的最长上升子序列的长度,状态转移方程为 FI = Max FJ + 1,其中

8、J0,I-1 且 AJ N0 时,n 可以由若干 S到 T 之间的正整数(包括 S,T)组成。因此,将障碍点按升序排列,当两相邻障碍点之间距离较大时,可适当缩小两障碍点之间距离,但不影响最终结果。 (特别地,当 S=T 时需要单独处理)针对每一组 S 和 T 都存在一个 N0。对于任意的 S 和 T(ST 时) ,那么每次至少有T 和 T-1 两种跳法。假设青蛙跳 T 次,其中 K 次跳 T 步, T-K 次跳 T-1 步,那么总步数为KT + (T-K)(T-1)= T(T-1) + K,也就是说 T(T-1)以外的所有点都可以跳到。这样一来,我们就可以把间距超过 T(T-1) + K 的两

9、点间距离化为 T(T-1) + K。T=K=10 时,T(T-1) + K 取得最大值 100,这时整个算法的时间复杂度为 O(100MT),可以在 1s 内通过全部测试数据。2.1.3 一维状态划分的非线性动态规划下面要讨论的是一维状态划分的非线性动态规划问题。其中最为经典的模型就是 0-1背包问题:给定 N 种物品和一背包。物品 I 的重量是 WI,其价值为 VI,背包的容量为C。选择装入背包的物品,使得装入背包中物品的总价值最大,求这个最大价值。每考虑一件物品为一个阶段,对于每一物品来说,都只有取和不取两种可能。那么设FI,J表示考虑前 I 个物品取的总重量不超过 J 的最大价值,则有状

10、态转移方程:FI,J = Max ( FI-1,J, FI-1,J-WI + VI) 。实际上,0-1 背包问题和 Number Triangles 问题只是在做决策时略有不同,前者考虑取或者不取,而后者考虑要走到左边还是右边。最后提醒一下,0-1 背包是一个 NP 问题,时空复杂度均为 O(NW ) ,当 W 的规模比较大时(不是很过分的大) ,空间开销随之增大,我们可以利用滚动数组解决这一问题。由于动态规划的无后效性,我们只需记录相邻的两个阶段的状态即可,这就是滚动数组的原理。Noip2006 金明的预算方案http:/122.139.62.222/problem.php?id=1579【

11、题目描述】信息学竞赛中的动态规划专题第 14 页/共 50 页金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过 N 元钱就行 ”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: 主件 附件 电脑 打印机,扫描仪 书柜 图书 书桌 台灯,文具 工作椅 无 如果要买归类为附件的物品,必须先买该附件所属的主件。每个主件可以有 0 个、1个或 2 个附件。附件不再有从属于自己的附件。金明想买的东西很多,肯

12、定会超过妈妈限定的 N 元。于是,他把每件物品规定了一个重要度,分为 5 等:用整数 15 表示,第 5 等最重要。他还从因特网上查到了每件物品的价格(都是 10 元的整数倍) 。他希望在不超过N 元(可以等于 N 元)的前提下,使每件物品的价格与重要度的乘积的总和最大。 设第 j 件物品的价格为 vj,重要度为 wj,共选中了 k 件物品,编号依次为j1,j2,jk,则所求的总和为: vj1*wj1+vj2*wj2+ +vjk*wjk。 (其中*为乘号) 请你帮助金明设计一个满足要求的购物单。 【输入格式】 第 1 行为两个正整数,用一个空格隔开: N 和 m, (其中 N(0,表示该物品为

13、附件,q 是所属主件的编号)【输出格式】 只有一个正整数,为不超过总钱数的物品的价格与重要度乘积的总和的最大值(J)&(S(1 BJ;计算 LCS 长度的时间复杂度:O(LEN_ALEN_B) ,构造 LCS 的时间复杂度:O(LEN_A + LEN_B) 。Ioi2000 Palindromehttp:/122.139.62.222/problem.php?id=1866【题目描述】回文词是一种对称的字符串也就是说,一个回文词从左向右读和从右向左读得到的结果是一样的。任意给定的一个字符串,通过插入若干字符,都可以变成一个回文词。你的任务是求出将给定字符串变成回文词所需要插入的最少字符数。【输

14、入格式】 第一行包含一个数字 N(N5000) ,表示字符串的长度,第二行包含一个长度为 N 的字符串。【输出格式】 只有一个正整数,为将给定字符串变成回文词所需要插入的最少字符数。【样例输入】 5Ab3bd【样例输出】 2这个问题相当于把将原串从某点截成两段,求前一段与后一段的逆串的最长公共子序列。和合唱队型类似,不要先枚举分割点,将原串和其逆串的最长公共子序列的最长公共子序列计算之后再做分割处理。我们前面提到过 LIS,现在又介绍了 LCS,下面讨论一下它们的结合体: 最长公共上升子序列(LCIS) 。对于 LCIS 的定义如下:给出两个长度分别为 n,m 的序列 A 和 B。求出一个长度

15、最长序列 C,满足:C1 AI 且 BQBJ。该算法的时间复杂度为 O(N 4) 。为了提高算法效率,我们需要去掉一些重复计算,例如上述算法中存在 L 使 L时,第 i 颗珠子的尾标记应该等于第 i+1 颗珠子的头标记。第 N 颗珠子的尾标记应该等于第 1 颗珠子的头标记。至于珠子的顺序,你可以这样确定:将项链放到桌面上,不要出现交叉,随意指定第一颗珠子,然后按顺时针方向确定其他珠子的顺序。【输出格式】 只有一个正整数 E(E2.1*10 9) ,为一个最优聚合顺序所释放的总能量。【样例输入】 42 3 5 10信息学竞赛中的动态规划专题第 22 页/共 50 页【样例输出】 710记 AI为

16、第 I 颗能量珠的首标记,也同时是它前面那颗能量珠的尾标记。设 FI,J为从以 AI为首标记的能量珠开始顺时针数到以 AJ为尾标记的能量珠为止所有能量珠组成的串合并后放出的最大能量。则有:FI,J=MaxFI,K+FK,J+AI *AK*AJ (K= I J) 。计算 FI,J时,只会用到含有能量珠数目比它少的串在数组中的值,所以要 按照串的能量珠数目依次增大的顺序递推。接下来,如果解决环的问题呢?枚举分割点是一种办法,但是会把时间复杂度增加到 O(N 4) 。所以我们不如将原串复制一份加到原串的后面再进行动态规划。HLJCPC 2007 Maxhttp:/ + 2 * 3直接看的结果是 7,

17、然而如果添加一个括号,如(1 + 2) * 3,那么它的结果就是 9 了。实际上,9 也是最大的结果。【输入格式】 第一行是一个正整数 N(2 N100) ,第二行是一个表达式,只包含 *和+ 两种运算符,N 个数字间有 N-1 个运算符,其中数字可以为负数。【输出格式】 只有一个正整数即表达式可以到达的最大值。【样例输入】 41 + 2 * 3 + -1【样例输出】 8题目的做法基本和矩阵乘法一致,但是需要注意一点:由于乘法运算的存在(两个最小负数的乘积可能成为最大值) ,我们不仅要保存某部分表达式的最大值,还要保存它的最小值。设 FI,J表示表达式从 I 到 J 部分的最大值,GI,J 表

18、示表达式从 I 到 J 部分的最小值,则有:Signi = *时FI,J = MaxFI,K * FK+1,J, GI,K * FK+1,J, FI,K * GK+1,J, GI,K * GK+1,JGI,J = MinFI,K * FK+1,J, GI,K * FK+1,J, FI,K * GK+1,J, GI,K * GK+1,JSigni = +时FI,J = MaxFI,K + FK+1,JGI,J = MinGI,K + GK+1,J信息学竞赛中的动态规划专题第 23 页/共 50 页AsyzOI 2005 龙珠外挂【问题描述】QQ 龙珠是腾讯公司新推出的一个 QQ 游戏项目。目的是

19、为了有效的防止外挂,毕竟这个游戏不是那么的简单。QQ 龙珠的规则是这样的:有一串 n 个带颜色的球(最多可能有红、黄、蓝和绿四种颜色) ,你可以向这个串里加球,当有连续三个或三个以上相同颜色的球连在一起时,我们称为可消除状态,通过一次加球新产生出的可消除状态才真正意义上的可消除。我们为了开发外挂,要找一个加入尽可能少的球并能将整串球全部消除的方案。举个 n=12 的时候的例子,整个串的消除过程如下:第一步,在第四个球前加入一个蓝色球;第二步,在第八个球前加入一个蓝色球;第三步,在第八个球前加入一个蓝色球;第四步,在第二个球前加入一个绿色球;第五步,在第二个球前加入一个绿色球;第六步,在第一个球

20、前加入一个红色球。这样就把整个串消除了,当然,方法不唯一。【输入文件】输入的第一行是一个整数 n(1 n 100) ,表示初始的球数。第二行有一个由 n 个字符组成的字符串,每个字符只可能是 R(红)Y(黄)B (蓝)G(绿)其中的一个。【输出文件】输出包括一个整数 k,表示消除整个串最少需要放入 k 个球。【样例输入】12RGRRRYBYYRBB【样例输出】6未解决,- -! ,求教 ww 大牛。2.2.1 其他二维状态划分的动态规划举例信息学竞赛中的动态规划专题第 24 页/共 50 页Central European 2000 I-KeyBoardhttp:/ 12 个键,更糟的是只有其

21、中 8 个可以用来输入 26 个英文字母,它的设计如下面的图所示。每个键可以对应一组字母。如果你想输入某一组的第 1 个字母,你按一下对应的键就行了;如果你要第 2 个,那你得按两下;如果是第 3 个或者第 4 个这种键盘的设计者并不在乎你按键次数的多少,他们只看重平均分配字母。有些字母的使用频率要高些,但它们被安排在一组字母的第 3 个或第 4 个。例如 S 是个常用的字母,但我们要按 4 下才能输入一个 S。而我们需要你编写一个程序,找到一种最优的键盘(对于给定的字母使用频率) 。当然,不论如何安排字母和按键的对应关系都必须保持字母的顺序,这样用户才不会感到头晕。不过你可以安排任意数量的字

22、母对应一个按键。【输入文件】输入第一行有两个整数 K 和 L(1 K L) 。K 表示提供按键的个数,L 表示有多少字符需要安排到键盘上。接下来 L 行,每行是一个非负整数,这些数字依次表示字母表中字符的使用频率。较大的数字表示较高的使用频率。这些数字最大不超过 10000。【输出文件】输出包括一个整数 S。S 为所有字符的输入代价和的最小可能值,一个字符的输入代价定义为其使用频率与输入这个字母需要的按键次数的乘积。一定要注意:所有字母在键盘上的排列顺序是不能改变的。【样例输入】8 2633715891575信息学竞赛中的动态规划专题第 25 页/共 50 页16146212971773190

23、429891232091588151329963269108012127263083436813345189999427733871【样例输出】87180显然地,设 FI,J表示前 I 个键盘存有前 J 个字母的最小代价和,则有:FI,J = MinFI-1,K + GK + 1,J,其中 GK + 1,J表示把第 K+1 个字母到第 J 个字母存在一个键上的最小代价和。数组 G 需要递推,总体算法的时间复杂度为 O(N 3) 。USACO Jan2007 Problem Solvinghttp:/122.139.62.222/problem.php?id=1867【问题描述】这些日子,FJ

24、的奶牛一共有 P (1 P 300) 个待解决的问题。奶牛现在是上班族了,每个月的工资为 M (1 M 1000) 。 奶牛现在需要雇人来解决那些问题,其中有一个专家非常可靠,可以每一个月解决一个问题。他的收费方式是这样子的:解决问题前后各付一次钱( 1 payment M ) ,当然奶牛必须在当时能够支付足够的钱。求解决这些问题所需要的最小时间。还有一点:这些问题是有严格先后顺序的。【输入格式】 第一行是两个正整数 M 和 P,以下 P 行每行两个数,表示解决该问题前后分别需要付信息学竞赛中的动态规划专题第 26 页/共 50 页的费用。【输出格式】 只有一个正整数即解决全部问题需要的最小月

25、份数。【样例输入】 100 540 2060 2030 5030 5040 40【样例输出】 6【样例说明】+-+-+-+-+-+-+| | Avail | Probs | Before | After | Candy |Month | Money | Solved | Payment | Payment | Money |+-+-+-+-+-+-+| 1 | 0 | -none- | 0 | 0 | 0 | 2 | 100 | 1, 2 | 40+60 | 0 | 0 | 3 | 100 | 3, 4 | 30+30 | 20+20 | 0 | 4 | 100 | -none- | 0 |

26、50+50 | 0 | 5 | 100 | 5 | 40 | 0 | 60 | 6 | 100 | -none- | 0 | 40 | 60 | +-+-+-+-+-+-+设 FX,Y表示解决前 X 个问题且最后一个月解决了 Y 个问题所需要的最小月份数。利用辅助数组 G1X,Y和 G2X,Y表示在一个月解决问题 X 到问题 Y 间所有问题前后需要支付的费用。则有状态转移方程:FI,J = Min FKI-1 + PI,J,K,其中 G1I,J + G2K,I-1不超过 M 时,PI,J,K = 1,否则 PI,J,K = 2。这种算法的时间复杂度为 O(N 3) 。和 LIS 一样,可以加入

27、贪心思想,如果设 FX表示解决前 X 个问题需要的最小月份数,同时用辅助数组 GX表示解决前 X 个问题取得最小月份时,该月最少花费的钱数。则有状态转移方程:FI = MinFJ + QJ,I,GX,并随时更新 GX,则把时间复杂度降到了O(N 2) 。2.3 树型状态划分的动态规划顾名思义,树型状态划分的动态规划就是在“树”的数据结构上的动态规划。由树的结构可知,树型动态规划的方向一般是叶到根:将根的子节点传递有用的信息给根,使根得出最优解。信息学竞赛中的动态规划专题第 27 页/共 50 页URAL1039 Anniversaryhttp:/122.139.62.222/problem.p

28、hp?id=1849【问题描述】有个公司要举行一场晚会。为了能玩得开心,公司领导决定:如果邀请了某个人,那么一定不会邀请他的上司(上司的上司,上司的上司的上司都可以邀请) 。每个参加晚会的人都能为晚会增添一些气氛,求一个邀请方案,使气氛值的和最大。【输入格式】 第 1 行一个整数 N(1N6000)表示公司的人数。接下来 N 行每行一个整数。第 i 行的数表示第 i 个人的气氛值 x(-128x127)。接下来每行两个整数 L,K。表示第 K 个人是第 L 个人的上司。输入以 0 0 结束。【输出格式】 只有一个数,最大的气氛值和。【样例输入】 711111111 32 36 47 44 53

29、 50 0【样例输出】 5设 FI表示邀请 I 的最大值, GI表示不邀请 I 的最大值。则 FI = GI.sons,GI = Max(FI.sons,GI.sons。大多的树型动态规划可以化成类似的类型,下面介绍一下多叉树改造为二叉树的方法。Ctsc1997 选课http:/122.139.62.222/problem.php?id=1290【问题描述】信息学竞赛中的动态规划专题第 28 页/共 50 页在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习。现在有 N 门功课,每门课有个学分,每门

30、课有一门或没有直接先修课(若课程 a 是课程 b 的先修课即只有学完了课程 a,才能学习课程 b) 。一个学生要从这些课程里选择 M 门课程学习,问他能获得的最大学分是多少?【输入格式】 第一行有两个整数 N,M 用空格隔开。(1N200,1M 150)接下来的 N 行,第 I+1 行包含两个整数 ki 和 si, ki 表示第 I 门课的直接先修课,si 表示第 I 门课的学分。若 ki=0 表示没有直接先修课(1ki N, 1si20) 。【输出格式】 只有一行,选 M 门课程的最大得分。【样例输入】 7 42 20 10 42 17 17 62 2【样例输出】 13以样例数据为例,很容易

31、建出一棵树(如右图所示) 。我们可以选取某一个点 K 的条件只是它的父节点已经被选取或者它自己为根节点;而且我们不论如何取 K 的子孙节点,都不会影响到它父节点的选取情况,这满足无后效性原则。我们用函数 FI,J表示以第 I 个节点为父节点,取 J 个子节点的最佳代价,则可以进行动态规划。可是如此规划,其效率与搜索毫无差别。我们不妨改造树,将其转变为二叉树。变化方法为:一个节点的第一个孩子为其左孩子,而一个节点的兄弟为其右孩子。以样例数据为例,建出一棵二叉树(如右图所示) 。转化的时间复杂度为 O( N) 。我们还是利用同样的状态表示方法,则有状态转移方程:FI,J = Max(FL,K +

32、FR,J-K-1 + SI, FR,J)整个算法的时间复杂度为 O( N3) 。在实现树型动态规划的时候,通常使用后序遍历。信息学竞赛中的动态规划专题第 29 页/共 50 页3.动态规划的辅助与优化方法3.1.1 填鸭这里说的填鸭通常也被视为动态规划,我们先来看一个经典的硬币问题:给出 N 种硬币的面值,问面值 M 有多少种不同的表示方法。我们常见的解法就是设 FI表示面值为 I 的不同表示方法,则 FI = FI-CostJ 。这种填鸭没有决策,就是开一个大的数组,把代价值一个一个地填进去。再举一个简单的游戏步步为零。游戏者在一张菱形的表格中按照规则跳动,使得跳到的数字经过加号和减号的连接

33、,尽可能的逼近零。游戏者从最下面的方格出发,按照每次可以往上面左右两个格子的任意一格跳动,当游戏者跳到最顶端的方格时,游戏结束。在游戏未结束前,游戏者不允许跳到表格外。23 1-3 5 76 10 -2 20-7 -5 810 87对于上面的表格,最好的跳动方案是:7+8+(-5)+(-2)-5-1-2=0 或 7+10+(-7)-6+(-3)-3+2=0 或 7+10+(-5)-10-5+1+2=0 或 7+10+(-5)+(-2)-5-3-2=0。利用填鸭的方法,设 FI,J,K表示到第 I 层第 J 个数字组成 K 的可能性,则有 FI,J,K = FI + 1,J - 1,K + AI

34、,J or FI + 1,J - 1,K - AI,J or FI + 1,J,K + AI,J or FI + 1,J,K - AI,J。Oibh2005 胖子三角【问题描述】最近,地球上兴起了一股“登月热” 。人们纷纷报名参加太空游。胖子-这个摩登青年当然不会落伍。现在,胖子乘神州 X 号来到月球,准备开辟一片新的天地。他在月球上建立了一个食堂,并且想给他的月球食堂建造一个围栏。路人皆知的是胖子很爱吃,而且胖子很虚荣,为了使围栏看起来很酷,而且很像麦当劳的珍宝三角,胖子决定用面包把它建成三角形。胖子现在拥有 N(3=N40)块面包,由于胖子在建造围栏时不由自主地吃掉了一部分,所以这些面包长短不一,但胖子还算有些人性,将每块长度都吃成了整数,经过alston 锐利的目光推测,将每块面包长度(1=L40) 看出,为天文学爱好者带来极大方便。由于胖子的占有欲一般都很强( 特别是对食物) ,所以他还想用所有的面包使围栏的面积最大。【输入格式】 第一行有一个整数 N,第二行有 N 个数,表示面包的长度。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报