随笔分类 -  dp

dp题一定要会写呀
摘要:状态转移方程: p[i][i] = 1;p[i] = p[i+1] = 1(if s[i]=s[i+1]) p[i][j] = 1(if p[i+1][j-1]&&s[i]=s[j]) 阅读全文
posted @ 2016-10-15 20:50 iEdson 阅读(154) 评论(0) 推荐(0)
摘要:FatMouse and Cheese Problem Description FatMouse has stored some cheese in a city. The city can be considered as a square grid of dimension n: each gr 阅读全文
posted @ 2016-05-10 19:18 iEdson 阅读(132) 评论(0) 推荐(0)
摘要:#1043 : 完全背包 <!-- parameter: @time_limit @case_time_limit @memory_limit @description @sample_input @sample_output --> 时间限制:20000ms 单点时限:1000ms 内存限制:25 阅读全文
posted @ 2016-04-28 23:10 iEdson 阅读(147) 评论(0) 推荐(0)
摘要:滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 88861 Accepted: 33344 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑 阅读全文
posted @ 2016-04-28 00:09 iEdson 阅读(169) 评论(0) 推荐(0)
摘要:这题的话,和01矩阵差不多,但是每列可以移动,所以每列sort一下就可以了,因为把eof写成n!=0,tle,改了直接200ms... #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include 阅读全文
posted @ 2016-04-17 17:51 iEdson 阅读(146) 评论(0) 推荐(0)
摘要:来回可以看作从(1,1)出发到(n,n)的两条不相交的路径 //dp[k][x1][y1][x2][y2] = max(dp[k-1][x1-1][y1][x2-1][y2],dp[k-1][x1-1][y1][x2][y2-1],dp[k-1][x1][y1-1][x2-1][y2],dp[k-1 阅读全文
posted @ 2016-04-16 19:19 iEdson 阅读(202) 评论(0) 推荐(0)
摘要:很水的题目 路径的最优子结构,仅当代价满足时 dp[i][j] += dp[k][l] (k<=i&&l<=j) 这题剪枝可以省600ms,不剪枝基本压着1s过,数据还是可以的 以后要注意适当优化了 #include <iostream> #include <cstdio> #include <cs 阅读全文
posted @ 2016-04-15 00:55 iEdson 阅读(135) 评论(0) 推荐(0)
摘要:这题没想到用反串LCS,算是回顾了LCS吧 lcs最长子序列,刚开始忘了还以为是连续的子序列,额...搞了好久,现在应该不会忘了,还回顾了滚动数组,原来是上次还是不稳呀 现在求构成回文需要的min,转化为 n-原序列最大回文子序列 突然想起来好像在算法导论看到过用lcs求回文=.= //lcs求回文 阅读全文
posted @ 2016-04-14 19:36 iEdson 阅读(128) 评论(0) 推荐(0)
摘要:这题算是比较简单吧,dp[i][0]表示non-caps,dp[i][1]表示caps 状态转移方程还是比较简单的,注意小写的时候 caps+shift = lower #include <iostream> #include <cstdio> #include <cstdlib> #include 阅读全文
posted @ 2016-04-13 23:53 iEdson 阅读(105) 评论(0) 推荐(0)
摘要:一次ac,难的呀,和之前做的01最大矩阵差不多的,再加一维记录多'a','b','c'的每种情况的高度 #include <iostream> #include <cstdio> #include <cmath> #include <cstdlib> #include <cstring> #incl 阅读全文
posted @ 2016-04-13 22:36 iEdson 阅读(123) 评论(0) 推荐(0)
摘要:这题的话,求最大01矩阵,我们找每行的某一点,先初始化这点的高,再向两边延伸L[i],R[i],遍历所有节点就可以求出所有的面积 L[i]的求法可以用dp,一开始只看懂了用底*高的求法,一直在想dp在哪里...很好的题呀 状态转移方程 L[i] = L[L[i]-1] (a[k][i]<=a[k][ 阅读全文
posted @ 2016-04-13 14:47 iEdson 阅读(257) 评论(0) 推荐(0)
摘要:哎,这题我能说想到增加起始和终结点的嘛,一直在想dp[i]和dp[i-1]的关系,然后c就很难处理... dp[i] = dp[j]+f(i,j) 可以说很水嘛,要哭了 //dp[i] = dp[j]+t(i,j) t(i,j)为i到j的时间 //增加其实和终结点(技巧) #include <ios 阅读全文
posted @ 2016-04-12 23:12 iEdson 阅读(330) 评论(0) 推荐(0)
摘要:原来这就是背包呀,好吧没看题解我没写出,不过之前做过这种,就是求多项式的系数,这种模板还是很好用的,以后记住吧 //01背包模板 #include <iostream> #include <cstdio> #include <cmath> #include <cstdlib> #include <a 阅读全文
posted @ 2016-04-12 18:03 iEdson 阅读(150) 评论(0) 推荐(0)
摘要:O(n^3) 必然要讨论每种情况,每行必然要讨论0~0,0~1,0~2,...i~j(0<=i<=j<n)的情况,每行的每种情况都是一个确定的数值,则把n个【f(i,j)】可以看作求一个一维的最长连续子序列,这样讨论每种i,j分部情况,求出对应的一维最长子序列,这些子序列取max,即为题目所要求的最 阅读全文
posted @ 2016-04-11 00:46 iEdson 阅读(234) 评论(0) 推荐(0)
摘要:dp[j] = max(dp[k]+1,dp[j])(0<k<j&a[j]>a[k]) #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <stack> #include <queu 阅读全文
posted @ 2016-04-10 00:50 iEdson 阅读(114) 评论(0) 推荐(0)
摘要:这题我一直以为是贪心做的,做了好久找不到规律 看了解题报告,学习了压缩dp,类似dist,{v(i)}=min{v(i)-k},这种NP问题,O(n*2^n),数据给的比较小,其实也只能给15了,直接用2<<15数组表示状态 每个状态,记录最优的pre,now,当然pre(上一个状态量)和now(当 阅读全文
posted @ 2016-04-08 00:32 iEdson 阅读(134) 评论(0) 推荐(0)
摘要:呵呵呵,这题的话,去年不知道怎么就水过去了,现在做还是懵逼了 总是感觉这题很奇怪,哎 2,3,5,7的系数必然在已打出的表中取 状态转移方程 dp(n) = min(dp[i]*2,dp[j]*3,dp[k]*5,dp[l]*7) i<=j<=k<=l<n, a[4]={2,3,5,7} 用一个一维 阅读全文
posted @ 2016-04-07 00:52 iEdson 阅读(125) 评论(0) 推荐(0)
摘要:经典dp 题意将数分解,输出分解的数量 发现6分解后的第一个数都比前一个数小,则定义dp[r][x] dp[r][x]表示 x分解,第一数为r的情况 ,且r<x (r=x为临界条件,存在dp[2][4]=dp[2][2],所以我们定义dp[r][r]=1) dp[5][6]表示将6分解,一个分解数是 阅读全文
posted @ 2016-04-05 15:56 iEdson 阅读(327) 评论(0) 推荐(0)
摘要:dp经典题,这题一年前就做过了,主要在确定begin和end有技巧,题目要求输出第一个sub,所以begin要尽量左移,end尽量右移 #include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include 阅读全文
posted @ 2016-04-04 21:09 iEdson 阅读(125) 评论(0) 推荐(0)
摘要:这题的话,边界处理起来比较复杂,我归纳了讨论,最后还是wa了,哎,看了dicuss的代码,处理还是巧妙 #include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <string> #inc 阅读全文
posted @ 2016-04-03 20:59 iEdson 阅读(120) 评论(0) 推荐(0)