随笔分类 - 动态规划:多维
【洛谷P2513】逆序对数列
摘要:前缀和、滚动数组优化dp f[i][j]表示前i个数,逆序对数为j的方案数 我们知道,在第k个位置放第i个数,单步得到的逆序对数为i-k 则在前i个数,最多能产生的逆序对数为i个,最少0个,均可转移到j 所以我们得到:f[i][j]=sum(f[i-1][j...j-i]) 所以我们可以通过前缀和优
阅读全文
【洛谷P1941】飞扬的小鸟
摘要:f [ i ] [ j ] 表示横坐标为 i ,高度为 j 时的最小点击次数 分别dp处理: 1.上升,(1)<m (2)>=m 2.下降 3.管道 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int N
阅读全文
【洛谷P1541】乌龟棋
摘要:四维dp 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int N=41; 5 int f[N][N][N][N],g[356],a,b,c,d,n,m; 6 int max(int x,int y){ 7
阅读全文
【洛谷P2679】子串
摘要:dp 设f[i][j][l]表示A串取i个(但a[i]不一定能取到),B串取j个(b[j]一定能取到),此时用了l个串的方案数。 第一种情况:a[i]==b[j] f[i][j][l]=f[i-1][j-1][l]+f[x][j-1][l-1] 第二种情况:a[i]!=b[j] f[i][j][l]
阅读全文
【洛谷P1736】创意吃鱼法
摘要:一开始的思路是预处理矩阵前缀和 递推时通过前缀和判断是否合法(原图和左右反图分别一边) 这个思路有90分,但其实思路完全是不对的 附一组数据: 但原来的思路会输出3 原因在于它无法舍弃(1,1)的1从而取更优解 dp:f [ i ] [ j ] = f [ i ] [ j - 1 ] +1 为了避免
阅读全文
【洛谷P1006】传纸条
摘要:双线程dp f [ i ] [ j ] [ k ] [ l ] 表示 走到 (i,j),返回时走到(k,l)时的(总)最大价值 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int N=52; 5 int
阅读全文
浙公网安备 33010602011771号