随笔分类 - 动态规划
摘要:懒省事的小明时间限制:3000 ms | 内存限制:65535 KB难度:3描述 小明很想吃果子,正好果园果子熟了。在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。小明决定把所有的果子合成一堆。 因为小明比较懒,为了省力气,小明开始想点子了: 每一次合并,小明可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。小明在合并果子时总共消耗的体力等于每次合并所耗体力之和。 因为还要花大力气把这些果子搬回家,所以小明在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的...
阅读全文
摘要:三国志时间限制:3000 ms | 内存限制:65535 KB难度:5描述《三国志》是一款很经典的经营策略类游戏。我们的小白同学是这款游戏的忠实玩家。现在他把游戏简化一下,地图上只有他一方势力,现在他只有一个城池,而他周边有一些无人占的空城,但是这些空城中有很多不同数量的同种财宝。我们的小白同学虎视眈眈的看着这些城池中的财宝。按照游戏的规则,他只要指派一名武将攻占这座城池,里面的财宝就归他所有了。不过一量攻占这座城池,我们的武将就要留守,不能撤回。因为我们的小白手下有无数的武将,所以他不在乎这些。从小白的城池派出的武将,每走一公理的距离就要消耗一石的粮食,而他手上的粮食是有限的。现在小白统计出
阅读全文
摘要:完全背包时间限制:3000 ms | 内存限制:65535 KB难度:4描述直接说题意,完全背包定义有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的体积是c,价值是w。求解将哪些物品装入背包可使这些物品的体积总和不超过背包容量,且价值总和最大。本题要求是背包恰好装满背包时,求出最大价值总和是多少。如果不能恰好装满背包,输出NO输入第一行: N 表示有多少组测试数据(N<7)。 接下来每组测试数据的第一行有两个整数M,V。 M表示物品种类的数目,V表示背包的总容量。(0<M<=2000,0<V<=50000)接下来的M行每行有两个整数c,w分别表
阅读全文
摘要:苹果时间限制:3000 ms | 内存限制:65535 KB难度:2描述ctest有n个苹果,要将它放入容量为v的背包。给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱最大值。输入有多组测试数据,每组测试数据第一行为2个正整数,分别代表苹果的个数n和背包的容量v,n、v同时为0时结束测试,此时不输出。接下来的n行,每行2个正整数,用空格隔开,分别代表苹果的大小c和价钱w。所有输入数字的范围大于等于0,小于等于1000。输出对每组测试数据输出一个整数,代表能放入背包的苹果的总价值。样例输入3 31 12 13 10 0样例输出2View Code #include<stdio.h&
阅读全文
摘要:聪明的kk时间限制:1000 ms | 内存限制:65535 KB难度:3描述聪明的“KK”非洲某国展馆的设计灵感源于富有传奇色彩的沙漠中陡然起伏的沙丘,体现出本国不断变换和绚丽多彩的自然风光与城市风貌。展馆由五部分组成,馆内影院播放名为《一眨眼的瞬间》的宽银幕短片,反映了建国以来人民生活水平和城市居住环境的惊人巨变。可移动“沙丘”变戏法 的灵感源于其独特而雄伟的自然景观——富于传奇色彩的险峻沙丘。宏伟的结构、可循环的建材,与大自然相得益彰。环绕一周,发现它正是从沙丘那不断变换的形态中汲取灵感的。外形逼真到无论从哪个角度去观察,都能清楚地辨识出沙丘的特征。它“坡面”高达20米,微风吹来,你是否
阅读全文
摘要:传纸条(一)时间限制:2000 ms | 内存限制:65535 KB难度:5描述小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个m行n列的矩 阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小 渊坐在矩阵的左上角,坐标(1,1),小轩坐在矩阵的右下角,坐标(m,n)。从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传给小渊的纸条只可以 向上或者向左传递。 在活动进行中,小渊希望给小轩传递一张纸条,同时希望小轩给他回复。班里每个同学都可以帮他们传递,
阅读全文
摘要:矩形嵌套时间限制:3000 ms | 内存限制:65535 KB难度:4描述有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当 a<c,b<d或者b<c,a<d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。 你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内。输入第一行是一个正正数N(0<N<10),表示测试数据组数,每组测试数据的第一行是一个正正数n,表示该组测试数据中含有矩形的个数(n<=1000)随后的n行,每行
阅读全文
摘要:skiing时间限制:3000 ms | 内存限制:65535 KB难度:5描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个 区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1...
阅读全文
摘要:本是动态规划,刚开始的思路是在每个点观察最优解。但是这样似乎比较慢。没办法,参考了别人的思路。就是只考虑 提示的可通过格子即可。思路:1:先将输入的数据存到一个结构体中(方便排序)2.将输入的数据进行排序。因为输入时可能不是从小到大的顺序输入的3. 用动态规划的思想,排出从起始位置到最后的可行 最短长度4. 长加宽 减去 缩短的距离代码:#include<stdio.h>#include<algorithm>#include<math.h>using namespace std;struct str{ int x; int y;}a[1002];bool c
阅读全文
摘要:本题和南阳上的那个 房间安排 一个道理,不过就是加了个是两排房子,需要化简;简单思想:初始化数组,如果需要移动,自增一,代表一个操作,最后便历,找出操作数做多的那个,就是我们需要的最长时间代码:#include<stdio.h>#include<string.h>int main(){ int T,a[250],max,i,j,f,t,n,x; scanf("%d",&T); while(T--) { scanf("%d",&n); memset(a,0,sizeof(a)); for(i=0;i<n;++i
阅读全文
摘要:In ActionTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2165Accepted Submission(s): 713Problem DescriptionSince 1945, when the first nuclear bomb was exploded by the Manhattan Project team in the US, the number of nuclear weapons have soared acros
阅读全文
摘要:FATETime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3945Accepted Submission(s): 1742Problem Description最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务。久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级。现在的问题是,xhd升掉最后一级还需n的经验值,xhd还留有m的忍耐度,每杀一个怪xhd会得到相应的经验,并减掉相应的忍耐度。当忍耐
阅读全文
摘要:背包问题里面最基础的0 1背包问题,就是讲放或者不放的问题。其基本思想是,先放一个权值,然后用剩余的空间来放其他的,更新这时全部的能量状态,然后放两个,这时是 根据第一次的各权值状态来更新本次能量状态....依次类推#include<stdio.h>#include<string.h>int max(int a,int b){ return a>=b?a:b;}int main(){ int T,n,m,i,j,f[1010],a[1010],v[1010]; scanf("%d",&T); while(T--) { scanf(&qu
阅读全文
摘要:该题和那个蜜蜂朝露,上楼梯其实差不多,因为只有0和1两个数字,所以情况就变得可知,用递归可以找出#include<stdio.h>int a[42];int fan(int k){ if(k==2) return a[k]=3; if(k==3) return a[k]=5; if(k>3) return a[k]=fan(k-1)+fan(k-2);}int main(){ int T,n; scanf("%d",&T); a[0]=0; a[1]=1; fan(40); while(T--) ...
阅读全文

浙公网安备 33010602011771号