上一页 1 ··· 25 26 27 28 29 30 31 32 33 ··· 38 下一页
摘要: 从上到下枚举行,可以$O(m)$更新现在每一列往上连续的1的个数,也可以在$O(m)$的时间内完成排序。总复杂度$O(nm)$。#include#define M 1510int n,m,x,i,j,b[M],ans,q[2][M],t;char a[M];int main(){ for(scan... 阅读全文
posted @ 2015-08-10 23:31 Claris 阅读(394) 评论(0) 推荐(0)
摘要: 求出$M$的原根$g$以及每个数$i$的指标$ind[i]$。则$(a\times b)\bmod M = x$等价于$(ind[a]+ind[b])\bmod \varphi(M) = ind[x]$。这是个循环卷积,用快速幂+NTT加速运算即可,时间复杂度$O(m\log m\log n)$。#... 阅读全文
posted @ 2015-08-10 19:38 Claris 阅读(1015) 评论(2) 推荐(1)
摘要: 二分答案,转化成判定所有科学家能否在lim时间内走到安全的地方考虑网络流,对于每个非叶子节点,S向它连边,容量为该点科学家的人数对于每个叶子节点,向T连边,容量为该点的容量对于每个非叶子节点x,枚举它的所有祖先,对于一个祖先y,向y子树中所有与x距离不超过lim的点连边,容量为inf由于数据随机,所... 阅读全文
posted @ 2015-08-09 16:44 Claris 阅读(249) 评论(0) 推荐(0)
摘要: \[\begin{eqnarray*}ans&=&m^{\sum_{i=1}^n Stirling2(n,i)\bmod 999999598}\bmod 999999599\\&=&m^{B_n\bmod 999999598}\bmod 999999599\end{eqnarray*}\]99999... 阅读全文
posted @ 2015-08-09 02:38 Claris 阅读(617) 评论(0) 推荐(0)
摘要: 设g[i]表示n=i时的答案,则OEIS上可以找到如下递推式:g[i]=g[i-1]+g[i-2]-g[i-5]-g[i-7]+...其中符号为++--交替,第i项为f[i],f[1]=1,f[2]=2,f[3]=5,f[4]=7f[i]=3+2*f[i-2]-f[i-4]注意到f[731]>200... 阅读全文
posted @ 2015-08-09 00:28 Claris 阅读(564) 评论(0) 推荐(0)
摘要: 二分答案,转化为判定能否划分成不超过m段,且对每段求最小圆覆盖得到的圆半径不超过mid。对于当前的i,倍增出一个j,使得[i,i+(1#include#include#include#define N 100010using namespace std;int n,m,i,T=50,cnt,ans[... 阅读全文
posted @ 2015-08-08 17:58 Claris 阅读(482) 评论(0) 推荐(0)
摘要: 首先旋转坐标系$x'=x-y$$y'=-x-y$则对于一个点,它下一步可以往它左上角任意一个点连线。根据Dilworth定理,答案=这个偏序集最长反链的长度。设f[i]为到i点为止的最长反链长度,则f[i]=max(f[j])+1,j在i的左下角按x坐标排序后用树状数组优化DP即可,时间复杂度$O(... 阅读全文
posted @ 2015-08-07 23:06 Claris 阅读(335) 评论(0) 推荐(0)
摘要: 新建源汇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 阅读(446) 评论(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 阅读(668) 评论(0) 推荐(0)
摘要: 考虑离线。用Link-Cut Tree维护删除时间的最大生成树。加入一条边时,如果两点不连通则直接link,否则肯定有一条边多余,若形成奇环则将多余的边加入集合。删除一条边时,若这条边是树边则直接删除,否则若在集合中,则从集合中删除。查询时,如果集合中没有边,则为二分图。#includeconst ... 阅读全文
posted @ 2015-08-06 20:45 Claris 阅读(770) 评论(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 阅读(618) 评论(0) 推荐(0)
摘要: 考虑构造一组可行解,把每个点拆成两个点x0,x1,x0表示后勤组织,x1表示同谋者。若x与y认识,则x1向y0连边。若x与y不认识,则x0向y1连边。如此求出一组2-SAT的可行解,如果无解则答案为0。若有解,那么最多只能把一个人从后勤组织改为同谋者,也最多只能把一个人从同谋者改为后勤组织。于是预处... 阅读全文
posted @ 2015-08-05 23:25 Claris 阅读(516) 评论(0) 推荐(0)
摘要: 如果两个环相交,那么相交的部分相当于没走。因此一定存在一种方案,使得里面的环都不相交。把不需要改变状态的边都去掉,剩下的图若存在奇点则无解。否则,每找到一个环就将环上的边都删掉,时间复杂度$O(n+m)$。#includeconst int N=2000010,BUF=20000000;int n,... 阅读全文
posted @ 2015-08-05 17:22 Claris 阅读(598) 评论(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 阅读(433) 评论(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 阅读(520) 评论(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 阅读(664) 评论(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 阅读(510) 评论(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 阅读(979) 评论(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 阅读(512) 评论(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 阅读(350) 评论(0) 推荐(0)
上一页 1 ··· 25 26 27 28 29 30 31 32 33 ··· 38 下一页