动态规划
无
-晚风-
这个作者很懒,什么都没留下…
展开
-
HDU - 1257
题目链接某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.Input输入若干组数据.每组数据包括:导弹总个数(正整数,不超过1000),导弹依此飞来的高度(原创 2021-06-16 20:40:41 · 63 阅读 · 0 评论 -
51Nod - 1021
链接N堆石子摆成一条线。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价。计算将N堆石子合并成一堆的最小代价。例如: 1 2 3 4,有不少合并方法1 2 3 4 => 3 3 4(3) => 6 4(9) => 10(19)1 2 3 4 => 1 5 4(5) => 1 9(14) => 10(24)1 2 3 4 => 1 2 7(7) => 3 7(10) => 10(20)原创 2021-06-15 18:37:31 · 87 阅读 · 0 评论 -
背包问题_模板
01背包朴素写法 - 需要开一个二维数组f[i][j]用来储存“选法”,w[i]代表物品的价值,v[i]代表物品的体积,m表示背包的体积, n表示物品的总个数for(i=1;i<=n;i++) for(j=0;j<=m;j++) { f[i][j]=f[i][j-1]; if(j>=v[i])f[i][j]=max(f[i][j],f[i][j-v[i]]+w[i]); }printf("%d",f[n]][m]);一维优化版for(i=1;i<=n;原创 2021-03-07 19:35:59 · 60 阅读 · 0 评论