动态规划
文章平均质量分 69
允雨琉
永远的萌新
展开
-
hdu5550 Game Rooms (动态规划)
表示制杖,参考了一下别人的题解,做完发现自己整个人都不好了,竟然没有发现这么弱的dp方程,(我不知怎么的,一开始居然想了一个n^3的dp方程)设dp[i][s]表示计算到第i个且将其放在该段的最后一个,这一段全为s(0和1分别表示两种运动)那么dp方程就是dp[i][s] = min{dp[j][s^1] + valueSum(j+1, i)}, j valueSum(i, j)表示原创 2015-11-07 18:14:30 · 1166 阅读 · 0 评论 -
sgu482 Impudent Thief (动态规划)
设dp[i][j]为最后一个放i,周长为j所拿走的木板总高度dC(i, j)表示i与j放在一起,周长的改变量这样dp方程如下dp[k][j + dC(i, k)] = max{dp[i][j] - h[k]} , k > i时间复杂度为O(n^2*C),即O(n^3*h)#include #include #include #include using namesp原创 2015-10-26 18:22:27 · 359 阅读 · 0 评论 -
codeforces589B Layer Cake (动态规划)
首先,有一点可以很容易判断出,那就是短边一定和短边在一起,长边一定和长边在一起。所以这里就不妨设a接下来将所有长方形按照a从大到小排序(因为长边一定不会对短边造成影响,以使得其满足无后效性)设dp[i][j]表示最后一个放i,高度为j的最大宽度,则dp[i][j] = min(b[i], max{dp[k][j-1]}), k 事实上可以再增加一个额外的数组maxValue[原创 2015-10-25 23:03:40 · 443 阅读 · 0 评论 -
ural1017 Staircases (动态规划)
设dp[i][j]表示使用i个砖块,最后一个台阶的方块数量为j的不同方案数(先不考虑条件Every staircase consists of at least two steps)那么状态转移方程即为dp[i][j] = ∑dp[i-j][k] (0 最后考虑每个楼梯都必须包含至少两层,这时只需要最终答案减1便可#include using namespace std;typ原创 2017-02-22 19:59:06 · 673 阅读 · 0 评论