
动态规划-区间
文章平均质量分 54
Endless_Way
这个作者很懒,什么都没留下…
展开
-
BZOJ 1055 [HAOI2008]玩具取名
每一个字母可以变成两个字母,于是枚举变出的两个字母所继续形成的两个区间的分界点,然后就可以区间DP啦!记f[i][j]表示字符串区间[i,j]可能由什么字母变来。状压,f[i][j]的值用二进制存,从右往左依次表示W,I,N,G是否可取(如0010表示仅I可取)。枚举分界点时,把两边字母合起来,对比一下有没有哪个字母可以变成这两个字母的。如果有就把这个字母转化成对应二进制之后,和f[i][j]或一下原创 2016-07-30 17:42:57 · 608 阅读 · 0 评论 -
UOJ 104 [APIO2014]Split the sequence
首先发现如果切同样的地方,先切后切都一样,即操作顺序没影响,这样满足无后效性就可以DP了记f[i][j]f[i][j]表示前i的序列,切j次最大答案于是得到裸方程:f[i][j]=max(f[k][j−1]+sum[k]∗(sum[i]−sum[k]))(k<i)f[i][j]=max(f[k][j−1]+sum[k]*(sum[i]−sum[k]))(k<i) 复杂度O(n2k)O(n^2k)太大原创 2016-08-08 16:08:44 · 333 阅读 · 0 评论 -
BZOJ 4584 [Apio2016]赛艇
区间离散化+DPAiBiAiBi太大了,一个数一个数地做肯定不行。于是先按照区间端点把区间离散化,至多形成2n−12n-1个区间。f[i][j][k]f[i][j][k]表示第i个学校,派出的数量在第j个离散区间内,且第j个区间内有k个学校的方案数。f[i][j][1]f[i][j][1]可以由所有f[i−n][j−m][k]f[i-n][j-m][k]转移过来,于是DP的时候记下前缀和来统计。f[原创 2016-09-10 11:12:03 · 341 阅读 · 0 评论 -
BZOJ 1032 [JSOI2007]祖码Zuma
区间DP发现对于连续的相同颜色个数,我们只关心它大于1还是等于1,于是可以把相同颜色的块合起来,记一个size。注意到一个区间[i,j]的消除有两种情况。一是先消除[i,k]再消除[k+1,j],二是消除了[i+1,j-1]之后剩下两边的一样恰好消掉。记f[i][j]表示区间[i,j]全消除需要的最小代价,就可以DP了#include<cstdio> #include<cstring> #inclu原创 2016-09-27 14:03:33 · 415 阅读 · 0 评论 -
BZOJ 1068 [SCOI2007]压缩
区间DP题解:http://blog.youkuaiyun.com/qpswwww/article/details/44173265其实这题很久以前就做了,一直没空填坑#include<cstdio> #include<cstring> #include<algorithm> #define N 55 using namespace std; char s[N]; int f[N][N][2]; const i原创 2016-10-15 15:34:26 · 362 阅读 · 0 评论