动态规划
.
柏油
不负冬日春晓 不负青春韶华
展开
-
最长公共子序列+元素打印
代码:#include#include#includeusing namespace std;const int maxn = 100+10;char a[maxn],b[maxn];int dp[maxn][maxn];int path[maxn][maxn];void print(int len1 , int len2){ if(len1 < 0 || len2 < 0原创 2017-11-20 15:48:40 · 279 阅读 · 0 评论 -
nyoj 17 单调递增最长子序列(dp---记忆化搜索||穷举|| nlogn算法)
单调递增最长子序列时间限制:3000 ms | 内存限制:65535 KB难度:4描述 求一个字符串的最长递增子序列的长度如:dabdbf最长递增子序列就是abdf,长度为4输入第一行一个整数0随后的n行,每行有一个字符串,该字符串的长度不会超过10000输出输出字符串的最长递增子序列的长度样例输入3aaaababcabklmncdefg样例输出1原创 2017-04-02 15:48:49 · 436 阅读 · 0 评论 -
hdu 1003 Max Sum (dp)
Max SumProblem DescriptionGiven a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 +原创 2017-04-02 15:11:21 · 345 阅读 · 0 评论 -
CDOJ(UESTC) 251 导弹拦截(最长递增子序列nlogn算法+路径打印)
导弹拦截 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都要高于前一发的高度。某天,雷达捕捉到敌国的原创 2017-03-25 23:12:37 · 1233 阅读 · 2 评论 -
蓝桥杯 算法提高 合并石子 (dp)
算法提高 合并石子 时间限制:2.0s 内存限制:256.0MB 问题描述 在一条直线上有n堆石子,每堆有一定的数量,每次可以将两堆相邻的石子合并,合并后放在两堆的中间位置,合并的费用为两堆石子的总数。求把所有石子合并成一堆的最小花费。输入格式 输入第一行包含一个整数n,表示石子的堆数。 接下来一行,包含n个整数,按顺序给出每堆原创 2017-03-14 14:44:20 · 1421 阅读 · 0 评论 -
HDU 1181(记忆化搜索)
呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个统一规律:如果咒语是以a开头b结尾的一个单词,那么它的作用就恰好是使A物体变成B物体.Harry已经将他所会的所有咒语都列成了一个表,他想让你帮忙计算一下他是否能完成老师的作业,将一个B(ball)变成一个M(Mouse),你知道,原创 2017-03-14 09:39:25 · 300 阅读 · 0 评论 -
HDU 2078 复习功课(记忆化搜索)
为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑。xhd复习有个习惯,在复习完一门课后,他总是挑一门更简单的课进行复习,而他复习这门课的效率为两门课的难度差的平方,而复习第一门课的效率为100和这门课的难度差的平方。xhd这学期选了n门课,但是一晚上他最多只能复习m门课,请问他一晚上复习的最高效率值是多少?Input输入数据的第一行是一个数据T,表示有T组数据。 每原创 2017-03-13 20:21:13 · 293 阅读 · 0 评论 -
POJ 3356 AGTC (最长公共子序列)
Let x and y be two strings over some finite alphabet A. We would like to transformx into y allowing only operations given below:Deletion: a letter in x is missing in y at a corresponding positio原创 2017-03-13 13:02:35 · 254 阅读 · 0 评论 -
HDU 2037 (贪心或记忆化搜索)
“今年暑假不AC?” “是的。” “那你干什么呢?” “看世界杯呀,笨蛋!” “@#$%^&*%...” 确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视了。 作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其它的节目,比如新闻联播(永远不要忘记关心国家大事)、非常6+7、超级女生,以及王小丫的《开心辞典》原创 2017-03-13 12:56:28 · 258 阅读 · 0 评论 -
HDU 1248 dp
不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票(记住,只有一张钞票),为了防止自己在战斗中频繁的死掉,他决定给自己买一些道具,于是他来到了地精商店前.死亡骑士:"我要买道具!" 地精商人:"我们这里有三种道具,血瓶150块一个,魔法药200块一个,无敌药水350块一个." 死亡骑士:"好的,给我一个血瓶." 说完他掏出那张N元的大钞递给地精商人. 地原创 2017-03-10 21:25:10 · 239 阅读 · 0 评论 -
UVA 116 Unidirectional TSP(dp)
分析:本题中每一列就是一个阶段,每个阶段有三种决策;状态方程dp[i][j]=min(dp[i-1][j+1],dp[i][j+1],dp[i+1][j+1]);dp(i,j)表示当前阶段到最后一列的最小消耗。路径记录:用next1[][]来保存下一列行号。AC代码:#include#include#define INF 2147483647 using namespace st原创 2017-02-27 12:59:15 · 233 阅读 · 0 评论 -
HDU 2476 String painter(两次 区间dp)
String painterProblem DescriptionThere are two strings A and B with equal length. Both strings are made up of lower case letters. Now you have a powerful string painter. With the help of the p原创 2017-03-05 18:36:00 · 426 阅读 · 0 评论 -
nyoj 36 最长公共子序列(LCS)
最长公共子序列时间限制:3000 ms | 内存限制:65535 KB难度:3描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列。tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最原创 2017-04-02 21:50:09 · 247 阅读 · 0 评论 -
nyoj 214 单调递增子序列(二)(LIS - nlogn算法)
单调递增子序列(二)时间限制:1000 ms | 内存限制:65535 KB难度:4描述 给定一整型数列{a1,a2...,an}(0如:1 9 10 5 11 2 13的最长单调递增子序列是1 9 10 11 13,长度为5。输入有多组测试数据(每组测试数据的第一行是一个整数n表示序列中共有n个整数,随后的下一行里有n个整数,表示数列中的所有元素.每个整形数中原创 2017-04-02 22:07:00 · 248 阅读 · 0 评论 -
计蒜客 求数组的最长递减子序列(nlogn+路径打印)
给定一个整数序列,输出它的最长递减(注意不是“不递增”)子序列。输入包括两行,第一行包括一个正整数N(N输出为一行,最长递减子序列的结果,数字间用空格分隔(测试case中只会有一个最长递减子序列)。样例输入89 4 3 2 5 4 3 2样例输出9 5 4 3 2思路:我们知道nlogn算法中有一个B[len]数组,表示长度为原创 2017-11-18 22:17:18 · 867 阅读 · 0 评论 -
计蒜客 最长不下降子序列 (nlogn算法)
求最长不下降子序列的长度第一行为n,表示n个数第二行n个数最长不下降子序列的长度N小于5000for each num 样例输入31 2 3样例输出3分析:最长上升子序列之(nlogn算法)AC代码:#include#includeusing namesp原创 2017-05-22 14:23:35 · 443 阅读 · 0 评论 -
计蒜客 最长共公子串
一个字符串A的子串被定义成从A中顺次选出若干个字符构成的串。如A=“cdaad" ,顺次选1,3,5个字符就构成子串" cad" ,现给定两个字符串,求它们的最长共公子串。输入格式:第一行两个字符串用空格分开。输出格式:最长子串的长度。两个串的长度均小于2000样例输入abccd aecd样例输出3分析:dp求解,状态方程:dp[i]原创 2017-05-22 14:08:43 · 930 阅读 · 0 评论 -
计蒜客 等和的分隔子集 (dp)
晓萌希望将1到N的连续整数组成的集合划分成两个子集合,且保证每个集合的数字和是相等。例如,对于N=3,对应的集合{1,2,3}能被划分成{3} 和 {1,2}两个子集合.这两个子集合中元素分别的和是相等的。对于N=3,我们只有一种划分方法,而对于N=7时,我们将有4种划分的方案。输入包括一行,仅一个整数,表示N的值(1≤N≤39)。输出包括一行,仅一个整数,晓萌可以划分对应N的集合原创 2017-05-22 11:25:40 · 478 阅读 · 0 评论 -
计蒜客 爬楼梯 (dp)
假设你现在正在爬楼梯,楼梯有 nnn 级。每次你只能爬 111 级或者 222 级,那么你有多少种方法爬到楼梯的顶部?输入格式第一行输入一个整数 n(1≤n≤50)n(1\leq n \leq 50)n(1≤n≤50),代表楼梯的级数。输出格式输出爬到楼梯顶部的方法总数。样例输入5样例输出8原创 2017-05-20 08:55:10 · 899 阅读 · 0 评论 -
ZOJ 1027 Human Gene Functions(最长公共子序列)
Human Gene FunctionsTime Limit: 2 Seconds Memory Limit: 65536 KB It is well known that a human gene can be considered as a sequence, consisting of four nucleotides, which are simply d原创 2017-04-22 21:16:41 · 551 阅读 · 0 评论 -
hihoCoder 1037 : 数字三角形(记忆化)
#1037 : 数字三角形时间限制:10000ms单点时限:1000ms内存限制:256MB问题描述小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋彼岸的美国。美国人民的生活非常有意思,经常会有形形色色、奇奇怪怪的活动举办,这不,小Hi和小Ho刚刚下飞机,就赶上了当地的迷宫节活动。迷宫节里展览出来的迷宫都原创 2017-05-04 22:51:39 · 332 阅读 · 0 评论 -
蓝桥杯 算法提高 矩阵乘法 (区间dp)
算法提高 矩阵乘法 时间限制:3.0s 内存限制:256.0MB 问题描述 有n个矩阵,大小分别为a0*a1, a1*a2, a2*a3, ..., a[n-1]*a[n],现要将它们依次相乘,只能使用结合率,求最少需要多少次运算。 两个大小分别为p*q和q*r的矩阵相乘时的运算次数计为p*q*r。输入格式 输入的第一行包含一个整数原创 2017-04-04 22:45:18 · 614 阅读 · 0 评论 -
nyoj 613 免费馅饼 (dp)
免费馅饼时间限制:1000 ms | 内存限制:65535 KB难度:3描述 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由原创 2017-04-04 08:40:45 · 255 阅读 · 0 评论 -
nyoj 737 石子合并(一)(区间dp)
石子合并(一)时间限制:1000 ms | 内存限制:65535 KB难度:3描述 有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。输入有多组测试数据,输入到文件结束。每组测试数据第一行有一个整数n,表示有n堆石子。原创 2017-04-03 21:16:15 · 269 阅读 · 0 评论 -
nyoj 104 最大和(二维转一维)
最大和时间限制:1000 ms | 内存限制:65535 KB难度:5描述 给定一个由整数组成二维矩阵(r*c),现在需要找出它的一个子矩阵,使得这个子矩阵内的所有元素之和最大,并把这个子矩阵称为最大子矩阵。 例子:0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 其最大子矩阵为:9 2 -4原创 2017-04-02 22:34:00 · 319 阅读 · 0 评论 -
UVA 1626 括号序列(区间dp)
分析:区间dp,装填方程:dp(i,j)=min(dp(i,k)+dp(k+1,j)) 其中(i不知道为什么voj上用gets读取字符串会编译错误,改成fgets就对了。AC代码:#include#include#include#includeusing namespace std;const int maxn=100+10;int dp[maxn][maxn];char原创 2017-03-05 16:42:32 · 348 阅读 · 0 评论 -
UVA 10003 切木棍(区间dp)
思路:本题是一个区间dp题,状态方程dp(i,j)=max(dp(i,k)+dp(k,j)+v[j]-v[i]) 其中(iAC代码:#include#include#includeusing namespace std;#define INF 2147483647const int maxn=50+5;int v[maxn];int dp[maxn][maxn];int m原创 2017-03-05 09:51:07 · 375 阅读 · 0 评论 -
HDU 4109 Instrction Arrangement(DAG上的最长路径)记忆化搜索
题意:给n条指令,0到n-1,有些指令之间有依赖关系(x到y需要一段安全时间z),除这种关系之外所有指令可以同时进行;求CPU执行的最少时间。思路:就是求DAG上的最长路径(dp求解),记忆化搜索,防止超时。AC代码如下:#include#include#includeusing namespace std;const int maxn=10000+10;int g[1100原创 2017-02-23 15:14:26 · 413 阅读 · 0 评论 -
HDU 4001 To Miss Our Children Time(DAG上的动态规划)
题意:每组测试数据第一行给出n,代表接下来有n块砖;接下来n行,每行给出砖的长,宽,高,属性(a,b,c,d);d=0:该砖的长度和宽度要大于等于下面的砖的长,宽;即 长>=长,宽>=宽d=1:该砖的长度和宽度要大于等于下面的砖的长,宽;同时,该砖的面积要比下面的砖的面积大;即长>=长,宽>=宽,面积>面积。也就是长>=长&&宽>=宽&&(长>长||宽>宽)d=2:该砖的长原创 2017-02-23 12:00:26 · 309 阅读 · 0 评论 -
hdu 1224 Free DIY Tour(dp)
#include#include#includeusing namespace std;const int maxn=100+10;int dp[maxn];int p[maxn];int path[maxn];int g[maxn][maxn];int n;void print(int t){ if(path[t])print(path[t]); if(t!=n+1)p原创 2017-02-22 23:57:52 · 221 阅读 · 0 评论 -
UVA 437 The Tower of Babylon 巴比伦塔(DAG上的动态规划)
题意:给n中立方体,每种无限多个,求能堆成塔的最高高度(必须严格满足上面的长宽小于下面的)AC代码如下:#include#include#includeusing namespace std;const int maxn=30+2;struct node{ int x,y,z; node(int x=0,int y=0,int z=0):x(x),y(y),z(z){} b原创 2017-02-22 18:44:34 · 580 阅读 · 0 评论 -
HDU 4745 (区间dp ,最长非连续回文子序列)
题意:输入一个序列,两只兔子分别顺时针、逆时针走,同一时刻它们到的石头上的数值要相同,最多只能走一圈,并且不能回到起点。。求走过的最多步数。思路:dp求最长回文子序列。由于是一个环,所以起始位置可以任何位置(两只兔子也可以在同一块石头上)。例如有11个数,1 2 3 4 3 2 1 8 9 9 8,从第七个数断开,左边是一个长度为7的回文串,右边是一个长度为4的回文串,假设起点从4开始原创 2017-03-02 15:12:36 · 750 阅读 · 0 评论 -
UVA 1025 A Spy in the Metro城市里的间谍(dp)
分析:d(i,j)表示时刻i在车站j,最少还需要等多长时间,边界条件式是d(T,j)=0,其他为正无穷,每个站有3中决策1:等待1分钟(为什么是一分钟?因为最小单位是一分钟)2:搭乘往右开的车3:塔乘往左开的车预处理数组has_train[t][j][],在时间t、j站是否有向左(或右的地铁),输入时进行处理。时间逆序列举。AC代原创 2017-02-22 12:18:04 · 296 阅读 · 0 评论 -
HDU 4632 回文串(区间dp)
Palindrome subsequenceProblem DescriptionIn mathematics, a subsequence is a sequence that can be derived from another sequence by deleting some elements without changing the order of the remai原创 2017-03-02 10:30:11 · 285 阅读 · 0 评论 -
蓝桥杯 算法训练之数字三角形(dp)
算法训练 数字三角形 时间限制:1.0s 内存限制:256.0MB 问题描述 (图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大。 ●每一步可沿左斜线向下或右斜线向下走; ●1<三角形行数≤100; ●三角形中的数字为整数0,1,…99; .原创 2017-02-21 19:49:29 · 601 阅读 · 0 评论 -
HDU 1176 免费馅饼(dp)
都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身手敏捷的高手,但在现实中运动神经特别迟钝原创 2017-02-21 18:17:15 · 381 阅读 · 0 评论 -
nyoj 16 嵌套矩形(DAG上的动态规划)
矩形嵌套时间限制: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)中。你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩原创 2017-02-21 15:57:51 · 326 阅读 · 0 评论 -
POJ 1651 (最优矩阵链乘)
Multiplication PuzzleTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 9575 Accepted: 5954DescriptionThe multiplication puzzle is played with a row of c原创 2017-03-01 17:25:16 · 511 阅读 · 0 评论 -
POJ 3249 Test for Job(DAG上的dp + 记忆化搜索)
题意:出发点(入度为0),终点(出度为0),都可能不止一个;求从出发点到目标点的最大收获或最少消费(有些城市值为负,表示消费)思路:记忆化搜索避免超时。AC代码如下:#include#include#include #includeusing namespace std;#define INF 2147483647const int maxn=1e5+10;int v[m原创 2017-02-23 17:48:50 · 270 阅读 · 0 评论 -
nyoj 79拦截导弹 (DAG上的最长路问题)简单dp
拦截导弹时间限制:3000 ms | 内存限制:65535 KB难度:3描述某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于等于前一发的高度。某天,雷达捕捉到敌国导弹来袭。由于该系统还在试用阶段,所以只用一套系统,因此有可能不能拦截所有的导弹。原创 2017-02-23 19:03:28 · 364 阅读 · 1 评论