动态规划
KaDa_Duck
这个作者很懒,什么都没留下…
展开
-
神罗天征
题目分析上来一看,这不是国王游戏嘛。来,先比比大小,比半天发现,这把当前这个数放到前面,放到后面,自成一个这三种情况还要考虑后面的分组,那我中间还没分明白呢,后面还对我有影响,这咋办嘛。所以此题不可做,下一题贪心不行,我DP还不行嘛,就不会写DP,还叫写DP我们就想知道一下这个点咋划分,所以知道最后一个块的情况就好了。就设dp[i][j]表示最后一个块以i为结尾,j为起始,前面的块产生的答案和dp[i][j]表示最后一个块以i为结尾,j为起始,前面的块产生的答案和dp[i][j]表示最后原创 2020-11-23 21:15:18 · 167 阅读 · 0 评论 -
皇室战争
题目分析区间DP好题我们很容易就得出状态方程dp[i][j]表示i到j区间内能打出的最大伤害(无论合法与否)dp[i][j]表示i到j区间内能打出的最大伤害(无论合法与否)dp[i][j]表示i到j区间内能打出的最大伤害(无论合法与否)答案是 dp[1][n]dp[1][n]dp[1][n]完结 了吗? 先不说转移方程昵称价值代价122233334444显然我们要先打2,3然后打2,4那么我们就需要dp[i][j]=ma原创 2020-10-25 21:30:01 · 407 阅读 · 0 评论 -
CSP2019 T2 括号树
题目分析像我这种菜鸡,谁会直接想正解啊先看一下部分分,哇 55pts 还是条链再一看1e5,那必须DP啊dp[i][0/1]表示到第i位的总共合法括号,第i位是否匹配成功dp[i][0/1]表示到第i位的总共合法括号,第i位是否匹配成功dp[i][0/1]表示到第i位的总共合法括号,第i位是否匹配成功显然再加上一个栈即可完成转移dp[i][1]=max(dp[i−1][1],dp[i−1][0])+dp[stck[l−−]−1][0]+1dp[i][1]=max(dp[i-1][1],dp[原创 2020-10-23 09:53:54 · 329 阅读 · 0 评论 -
围栏障碍训练场
题目传送门分析说下题意 题意说完你们应该就都懂了如果牛在栅栏上,那么他只有当自己在 当前行 的左右端点时才能下降,且只能下降,不能左右移如果牛在地上,那么他就可以满地乱跑,直到爬上栅栏对于出口,我们可以把它当作在第一行,也可以当做在第0行看完题面了,那么这个题就 没啥要说的了设dp[i][0/1]表示在第i行的左端/右端,到终点的距离dp[i][0/1]表示在第i行的左端/右端,到终点的距离dp[i][0/1]表示在第i行的左端/右端,到终点的距离如果从起点处理的话,不好维护到上面原创 2020-09-11 20:37:31 · 212 阅读 · 0 评论 -
[AHOI2009]中国象棋
传送门分析显然对于每一行每一列我们都可以知道至多放2个炮。那么每一列只有3种情况: 1.还没有放置过 2.已经放置了1个 3.已经放置过2个了。那么每一行是不是就是一个子问题,我们用一维来表示已经处理到哪里了,这样这个DP就符合最优子结构了。那么我们就可以参考 移动服务 的优化后的状态方程设计方程啦。dp[i][l][r]表示前i行,l列有一个炮,r列有两个炮dp[i][l][r]表示前i行,l列有一个炮,r列有两个炮dp[i][l][r]表示前i行,l列有一个炮,r列有两个炮那么没有放置过原创 2020-09-04 19:56:56 · 90 阅读 · 0 评论