摘要: 设f[x]表示得到x这个回文串的最小步数,则ans=min(n-len[x]+f[x])边界条件f[长度为0的偶回文串]=1因为翻转只会得到偶回文串,所以f[奇回文串]=该串的长度对于一个偶回文串x,设y为x去掉首尾得到的串,有f[x]=f[y]+1设y为长度不超过x的一半的x的最长回文后缀,有f[... 阅读全文
posted @ 2015-08-03 22:38 Claris 阅读(962) 评论(0) 推荐(1) 编辑
摘要: 首先求出B和W的个数,如果只出现了一种那么直接输出sum(k)。否则依次扫描,能割就割,时间复杂度$O(n)$。#include#define N 100010typedef long long ll;int T,n,i,a[N],b[N],c[2],d[2],ans;ll x;char s[2];... 阅读全文
posted @ 2015-08-03 01:23 Claris 阅读(488) 评论(0) 推荐(0) 编辑
摘要: 考虑离线,将物品和询问都按a从小到大排序。然后对于当前处理的询问,将所有a不超过它的物品都加入背包中。设f[i]表示和为i时min(b)的最大值,若f[k]>m+s,则TAK。时间复杂度$O(q\log q+nk)$。#include#includeconst int N=1000010,M=100... 阅读全文
posted @ 2015-08-03 00:37 Claris 阅读(327) 评论(0) 推荐(0) 编辑