上一页 1 ··· 25 26 27 28 29 30 31 32 33 ··· 38 下一页
摘要: 新建源汇S,T,根据题意可以建出一个DAG设f[x][y]为从x走到y的回文路径的方案数,则边界条件:f[x][x]=1对于一条边x->y,若a[x]==a[y],则f[x][y]=1转移方程为:若a[x]==a[y],则f[x][y]=sum(f[i][j])(x->i有边,j->y有边)若a[x... 阅读全文
posted @ 2015-08-07 20:45 Claris 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 设d[i]表示能拼出的x中满足x%a[0]=i的最小的x,其中d[0]=0。若d[x%a[0]]#include#include#includeusing namespace std;typedef pairP;const int N=50010,inf=1000000010;int n,m,i,x... 阅读全文
posted @ 2015-08-07 15:13 Claris 阅读(655) 评论(0) 推荐(0) 编辑
摘要: 考虑离线。用Link-Cut Tree维护删除时间的最大生成树。加入一条边时,如果两点不连通则直接link,否则肯定有一条边多余,若形成奇环则将多余的边加入集合。删除一条边时,若这条边是树边则直接删除,否则若在集合中,则从集合中删除。查询时,如果集合中没有边,则为二分图。#includeconst ... 阅读全文
posted @ 2015-08-06 20:45 Claris 阅读(754) 评论(0) 推荐(0) 编辑
摘要: 设f[i][j]为前i个字符中j出现的次数,则ans=max((f[r][i]-f[l-1][i])-(f[r][j]-f[l-1][j]))=max((f[r][i]-f[r][j])-(f[l-1][i]-f[l-1][j])),其中f[r][j]!=f[l-1][j]。考虑枚举r,当r从r-1... 阅读全文
posted @ 2015-08-06 00:49 Claris 阅读(605) 评论(0) 推荐(0) 编辑
摘要: 考虑构造一组可行解,把每个点拆成两个点x0,x1,x0表示后勤组织,x1表示同谋者。若x与y认识,则x1向y0连边。若x与y不认识,则x0向y1连边。如此求出一组2-SAT的可行解,如果无解则答案为0。若有解,那么最多只能把一个人从后勤组织改为同谋者,也最多只能把一个人从同谋者改为后勤组织。于是预处... 阅读全文
posted @ 2015-08-05 23:25 Claris 阅读(491) 评论(0) 推荐(0) 编辑
摘要: 如果两个环相交,那么相交的部分相当于没走。因此一定存在一种方案,使得里面的环都不相交。把不需要改变状态的边都去掉,剩下的图若存在奇点则无解。否则,每找到一个环就将环上的边都删掉,时间复杂度$O(n+m)$。#includeconst int N=2000010,BUF=20000000;int n,... 阅读全文
posted @ 2015-08-05 17:22 Claris 阅读(584) 评论(0) 推荐(1) 编辑
摘要: 暴力枚举$k$,对于一个子串,计算它正着的hash值以及反着的hash值,取最小值得到其最终hash值。对于$k$,一共有$\lfloor\frac{n}{k}\rfloor$个子串,计算出它们的最终hash值即可统计出不同子串的个数。时间复杂度$O(n\log n)$。#includetypede... 阅读全文
posted @ 2015-08-05 01:01 Claris 阅读(414) 评论(0) 推荐(0) 编辑
摘要: \[\begin{eqnarray*}&&\sum_{i=0}^{n-1}\left(ki+b-a_i\right)^2\\&=&\sum_{i=0}^{n-1}\left(k^2i^2+b^2+a_i^2+2kbi-2kia_i-2ba_i\right)\\&=&k^2\sum_{i=0}^{n-... 阅读全文
posted @ 2015-08-04 23:15 Claris 阅读(499) 评论(0) 推荐(0) 编辑
摘要: 设f[x]为x子树里能选的最多的路径数,h[x]为x子树里往上走的点的集合,且不与x子树内的最优解冲突首先f[x]=sum(f[son])若h[son]与x可以直接匹配,则匹配上,f[x]++然后把剩下的未配对的son之间进行匹配,f[x]+=最大匹配数因为度数不超过10,所以设dp[S]表示二进制... 阅读全文
posted @ 2015-08-04 21:44 Claris 阅读(636) 评论(0) 推荐(0) 编辑
摘要: 对于区间[l,r],若询问的直线与该区间的凸壳有交,则有解。在线段树每个区间上维护凸壳,然后查询时在相应凸壳上二分斜率即可,时间复杂度$O(n\log^2n)$。#include#define N 262145typedef long long ll;int T,n,i,c,l[N],r[N],t;... 阅读全文
posted @ 2015-08-04 01:22 Claris 阅读(494) 评论(0) 推荐(0) 编辑
摘要: 设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 阅读(961) 评论(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 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 按边权从大到小加边,用Link-Cut Tree维护最小生成树。对于当前要加的边i,最小生成树上边权在[1,R]范围内的和就是询问[e[i].w,R]的答案。因为强制在线,所以用主席树存下所有历史版本即可。时间复杂度$O(n\log n)$。#include#includeusing namespa... 阅读全文
posted @ 2015-07-30 21:15 Claris 阅读(360) 评论(0) 推荐(1) 编辑
摘要: 对于两张卡牌,如果存在两种属性值不互质,则可以匹配。只考虑200以内的质数,一共有46个,可以新建3*46*46个点来表示一类属性值中有这两种质数的卡牌。然后对于每张卡牌,枚举它的质因子,最多只有3个,如此建图求出最大流即可。#includeconst int N=66500,inf=~0U>>2,... 阅读全文
posted @ 2015-07-28 20:23 Claris 阅读(426) 评论(0) 推荐(0) 编辑
摘要: 考虑枚举左端点i,则随着右端点的右移,一共只有$O(\log n)$种不同的gcd取值。所以首先通过ST表+二分查找预处理出$O(n\log n)$个四元组(x,i,l,r),表示左端点为i,右端点取值范围在[l,r]内,且这一段的gcd都为x。将四元组按照x为第一关键字,i为第二关键字排序,对于相... 阅读全文
posted @ 2015-07-28 18:16 Claris 阅读(337) 评论(0) 推荐(0) 编辑
摘要: 在每条边两个点中间加上一个虚拟点代表这条边权,就可以化边权为点权。把没删掉的边用LCT维护一棵生成树,树边都是桥。对于一条非树边,把树上对应路径上所有边的权值都修改为0,表示都不是桥。然后倒着处理询问,对于每次删掉的边,把两点路径上边权都修改为0。询问等价于查询两点间边权和,若两点连通且路径上不存在... 阅读全文
posted @ 2015-07-27 20:45 Claris 阅读(483) 评论(0) 推荐(0) 编辑
摘要: 首先一遍Dijkstra求出S到每个点的最短路,并建出最短路图。那么对于一条边,求在这条边不能使用的情况下,到首都S的最短时间会变长的点的数目,等价于求去掉这条边后在最短路图中不能从S出发到达的点的数目。对于边x->y,新建一个点z,然后连边x->z->y,这样只需要计算从S到i上必须经过z的点数。... 阅读全文
posted @ 2015-07-27 19:26 Claris 阅读(503) 评论(0) 推荐(0) 编辑
摘要: 考虑分块,每块大小为13,则一共需要38465块,求出b[i]表示前i块的和。查询时中间部分可以$O(1)$查询,只需再往两边累加零散的不超过26个数的和。空间上一共需要开500000的int和38465的long long。#includetypedef long long ll;const in... 阅读全文
posted @ 2015-07-27 12:21 Claris 阅读(401) 评论(0) 推荐(0) 编辑
摘要: f[i]=min(f[j])+1,线段j与线段i有交,且l[i]-l[j]=x[i],x[j]#includeconst int N=250010,inf=2000000000;int n,L,i,j,k,root,cmp_d,X,Y;struct P{int x,y,l,f,p;}a[N];inl... 阅读全文
posted @ 2015-07-27 01:50 Claris 阅读(454) 评论(0) 推荐(0) 编辑
上一页 1 ··· 25 26 27 28 29 30 31 32 33 ··· 38 下一页