dp:递推
ProLightsfxjh
这个作者很懒,什么都没留下…
展开
-
2016 UESTC Training for Dynamic Programming M - 柱爷抢银行欢庆5.1special 递推
递推 k阶的图刚好是k+2阶的图的白色部分 - val[i][j]; 所以刚好dp[i][j] = getsum(i, j, i+k-1, j+k-1) - dp[i+1][j+1] - val[i+1][j]; //dp[i+1][j+1] 还是上一个k 的 其中getsum(i, j, i+k-1, j+k-1)可以从二阶前置和得到, d1 - d2 - d3 + d4; 复杂度 O(n^3) 第一次碰到二阶前缀和,随便贴一个我写的版嘿嘿 inline int getsum(int i, int j原创 2016-05-17 12:15:46 · 1226 阅读 · 0 评论 -
2016 UESTC Training for Dynamic Programming P - 柱爷的矩阵 矩阵、递推
首先,对于每一行数字,B[i]越大数值减小越快 如果取第i行和第j行的数字,且B[i]>B[j],那么一定先取第i行。 所以先按照B[i]降序排序。 dp[i][j] 表示取了第i列第j行数字时的最优解 dp[i][j] = maxdpi_1[i-1][j-1] + max(0, val[i].a - (j-1)*val[i].b); maxdpi_1[i][j] = max(maxdpi_1[i-1][j], dp[i][j]); ans = {maxdpi_1}; 复杂度 O(M*N);原创 2016-05-17 12:25:49 · 931 阅读 · 0 评论 -
UVALive 5971 Permutation Counting 组合学、递推
反正枚举全排列必定TLE的, 然后排列组合里面其实递推挺多的, 也可以搞出前几项, 然后去 数列网站上查一下 这里的递推式是 dp[i] = dp[i - 1] * (i - 1) + dp[i - 2] * (i - 2) 这里dp[i] 表示 n == i 时合法的排列数 1)对于 dp[i - 1] * (i - 1) 则是对于 n == i - 1的合法排列, 可以在 (i - 1)个地方把第i个数插进去就好了, 总共 (i - 1 + 1) - 1个位置; 2)对于dp[i - 2] * (i -原创 2016-07-22 22:57:14 · 1290 阅读 · 0 评论 -
Codeforces Round #382 (Div. 2) C. Tennis Championship 递推、斐波拉契数列
题意:每个人输了比赛就会被淘汰,每两个人可以打比赛的要求是a赢过x场比赛b赢过y场比赛则当abs(x - y) <= 1 时他们可以进行比赛,总共n个选手,问最终的赢家可能赢过的场次的最大值。 递推、斐波拉契数列 递推是很好写的,cost[i] 表示赢i场比赛需要花费多少人, 则 cost[0] = 1,cost[1] = 2, cost[3] = cost[1] + cost[0], cost[ans] = cost[ans-1] + cost[ans-2]一次类推直到n不够用,ans即为答案。 原来是原创 2016-11-28 03:10:45 · 1243 阅读 · 1 评论