
dp
kuricip
如果你瞄准月亮,即便迷失,也是在星辰之间
展开
-
最少拦截系统(dp)
题目传送门 最少拦截系统 题目大意 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统. 思路 逆向思维的最长上升子序列 dp[i]dp[i]dp[i]代表到达第i原创 2020-10-18 20:23:34 · 561 阅读 · 0 评论 -
Tickets(dp)
题目传送门 Tickets 题目大意 现在有n个人要买电影票,如果知道每个人单独买票花费的时间,还有和前一个人一起买花费的时间,问最少花多长时间可以全部买完票。 思路 dp[i]dp[i]dp[i]记录到第iii个人的时候消耗的最小时间即可 转移方程为:dp[i]=min(dp[i−1]+s[i],dp[i−2]+d[i−1])dp[i]=min(dp[i-1]+s[i], dp[i-2]+d[i-1])dp[i]=min(dp[i−1]+s[i],dp[i−2]+d[i−1]) 其中s[i]s[i]s[i原创 2020-10-18 15:02:36 · 278 阅读 · 0 评论 -
免费馅饼(塔数)
题目传送门 免费馅饼 题目大意 给你一个0~10的数轴 人最开始在5处,人去接馅饼,每次可以移动一个位置,即可以到达4,5,6中任意一点, 给你n个数据,每组数据包括x,T,为T时间x处有一个馅饼,求此人最多可以接到多少馅饼 思路 塔数的思想,从底向上推,用二维数组记录馅饼的情况 即dp[i][j]dp[i][j]dp[i][j]表示在iii时刻jjj处位置的馅饼的个数 转移方程为dp[i][j]+=max(dp[i+1][j−1],max(dp[i+1][j],dp[i+1][j+1]))dp[i][j原创 2020-10-18 11:55:59 · 465 阅读 · 0 评论 -
Piggy-Bank(完全背包)
题目传送门 Piggy-Bank 题目大意 给你一个存钱罐的初始重量和装满后的重量 给你n个可以任意取的硬币,每个硬币具有价值和重量,求将存钱罐装满后硬币的最小价值 若不能装满则输出 This is impossible. 思路 很明显的完全背包问题,因为求的最小值,所以将数组初始化的时候为无穷大,最后判断是否装满即为装满时大小是否为无穷大即可 AC Code #pragma GCC optimize("-Ofast","-funroll-all-loops") #include<cstdio>原创 2020-10-18 10:46:33 · 307 阅读 · 0 评论 -
Super Jumping! Jumping! Jumping!(dp)
题目传送门 Super Jumping! Jumping! Jumping! 题目大意 给你一长度为n的序列,求非连续的最大递增子序列的和,多组数据 思路 一维dp,dp[i]dp[i]dp[i]表示到iii时最大递增子序列的和 转移方程为dp[j]=max(dp[j],dp[i]+a[j]) when a[j]>a[i]dp[j]=max(dp[j],dp[i]+a[j])\ \ when\ \ a[j]>a[i]dp[j]=max(dp[j],dp原创 2020-10-17 13:09:52 · 151 阅读 · 0 评论 -
Monkey and Banana(基础dp)
题目传送门 Monkey and Banana 题目大意 给你n个砖块和每个砖块的三个数值,分别为长宽高并且可以任意选择,每个砖块可以使用任意次。 上面的砖块的长宽必须严格小于下面的砖块,求最高可以堆叠砖块到多高? 思路 每个砖块一共有3∗2∗13*2*13∗2∗1种情况,限制长宽后即为3种情况,所以我们可以将三种情况全部存下(任意次数使用) 然后按照长宽由小到大排序 dp每层可以达到的最大高度(每i层之前的最大高度加上本层高度作为下次比较的高度) 注意点:因为存三次,所以数据范围实际为0<=n<原创 2020-10-14 00:26:53 · 193 阅读 · 0 评论 -
Max Sum Plus Plus (dp)
题目传送门 题目大意 给你m个数,在其中选取n组 使得每组的数连续,且互相不能相交, 求出最大的各组数的和 思路 采取二维dp的方法 dp[i][j]dp[i][j]dp[i][j]中,iii为组数,j为以a[j]a[j]a[j]结尾 状态转移方程为 dp[i][j]=max(dp[i−1][j]+a[j],dp[i−1][k]+a[j])(0<k<j)dp[i][j]=max(dp[i-1][j]+a[j],dp[i-1][k]+a[j])(0<k<j)dp[i][j]=max(d原创 2020-10-03 15:51:23 · 605 阅读 · 0 评论 -
Strange Towers of Hanoi(递归/递推/dp)
题目大意: 求出n盘四柱Hanoi的最优解 原题面参考 https://ac.nowcoder.com/acm/contest/998/E 来源:牛客网 思路: 三柱Hanoi问题中,递推公式为的d[n]=2*d[n-1]+1; 原因: 1、将n-1个盘放在B柱(利用C柱)上需要d[n-1]步 2、将最后一个放在C上需要一步 3、将B柱上的n-1个移到C上(利用A)需要d[n-1]步 共需要2*d[n-1]+1步,其中d[1]=1; 四柱Hanoi问题中,递推公式为f[n]=min(f[n],f[原创 2020-06-25 17:25:13 · 289 阅读 · 0 评论