随笔分类 -  区间dp

摘要:题目链接:https://codeforces.ml/problemset/problem/1519/D 思路: 可以预处理前后缀和 然后枚举翻转的终点 然后左右同时扫一遍得到答案 为了让长度为偶数的情况好处理 可以像manacher那样 把长度边为2*n 中间用0隔开 1 #include<bit 阅读全文
posted @ 2021-04-30 09:33 canwinfor 阅读(137) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.ml/gym/102835/submit 题意:给定7种字符 每有一段连续的长度大于m的相同字符就能消去 问最终整段字符串能否消去 dp[i][j][x] 代表 i到j区间 剩种类为x的数最大为多少 那么每次区间合并的时候 还是 dp[i][j][x] 阅读全文
posted @ 2020-12-21 22:21 canwinfor 阅读(238) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/CF1312E 思路:dp[i][j] 表示 合并i到j的最小长度, 那么转移dp[i][j]=min(dp[i][j],dp[i][k],dp[k+1][j]) 很好想到 考虑如何来使两段相邻的区间来合并成一段 当只有区间 阅读全文
posted @ 2020-12-20 14:24 canwinfor 阅读(115) 评论(0) 推荐(0)
摘要:题目链接:https://ac.nowcoder.com/acm/problem/13230 思路: 区间dp 只有四种情况 讨论 注意处理边界问题 把0的处理好后 1的也好了 2的不用处理 因为不同于单个字符串 https://ac.nowcoder.com/discuss/391086 题解 1 阅读全文
posted @ 2020-12-19 01:02 canwinfor 阅读(22) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P4170 思路: 考虑合并两个区间的时候 如果首和尾相同的话 那么就可以在涂首的时候也涂上尾 或者是涂上尾的时候也涂上首 否则的话枚举分割点 取两段区间合并 1 #include<bits/stdc++.h> 2 #def 阅读全文
posted @ 2020-12-19 01:01 canwinfor 阅读(85) 评论(0) 推荐(0)