Loading [MathJax]/jax/element/mml/optable/BasicLatin.js

12 2014 档案

摘要:不跳过任何点的路程=dis(l,l+1)+dis(l+1,l+2)+...+dis(r-2,r-1)+dis(r-1,r)要跳过一个点i,则要最小化dis(i,i+2)-dis(i,i+1)-dis(i+1,i+2)于是用线段树支持单点修改、区间查询和以及最小值即可#include#define N... 阅读全文
posted @ 2014-12-31 20:59 Claris 阅读(286) 评论(0) 推荐(0) 编辑
摘要:莫比乌斯反演得ans=g[i]aibi其中g[i]=j|if[j]μ(ij)由f和miu的性质可得设n=p[1]a[1]p[2]a[2]...p[k]a[k]若存在a[i]不等于$a[... 阅读全文
posted @ 2014-12-30 17:57 Claris 阅读(833) 评论(0) 推荐(0) 编辑
摘要:n维超立方体有2niCin个i维元素,于是O(n)预处理出1到n的逆元,再O(n)计算即可。注意Trick:P可能小于n,所以要将数字表示成a×Pb的形式。#include#define N 10000001typedef long long ll;int ... 阅读全文
posted @ 2014-12-27 21:45 Claris 阅读(371) 评论(0) 推荐(0) 编辑
摘要:线段树每个节点维护d[4][4]表示四个顶点之间的最短路,合并时用Floyed合并,查询时分三段然后合并。#include#define N 100010struct P{int d[4][4];}T[N>2,flag,ans,d1,d2;inline void up(int&x,int y){if... 阅读全文
posted @ 2014-12-26 12:08 Claris 阅读(387) 评论(0) 推荐(0) 编辑
摘要:线段树套并查集,怎么暴力怎么写。#include#define N 202struct P{int c[2],f[N*2];}T[N*4];int n,m,i,j,a[N][N],f[N*4],t[N*4];int F(int x){return f[x]==x?x:f[x]=F(f[x]);}in... 阅读全文
posted @ 2014-12-26 09:33 Claris 阅读(826) 评论(6) 推荐(0) 编辑
摘要:询问[l,r]实际就是询问φ()φ(n)=n×...×(11pi)由于素数只有60个,所以只需用线段树维护区间内所有数字的积,以及压位表示的出现过的素数即可O(logn)每次操作#includety... 阅读全文
posted @ 2014-12-24 17:17 Claris 阅读(343) 评论(0) 推荐(0) 编辑
摘要:左右与右左是两个独立的问题设f[i]表示i时刻左右车道减少一条的答案g[i]表示i时刻右左车道增加一条的答案ans=min(f[i]+g[i+r])计算f[i]:首先暴力计算出f[m+1],同时记录下每个时刻刚开走的车的数量now[i]从m到1计算f[i],如果该时刻开走的车数不足n1+1,则无影响... 阅读全文
posted @ 2014-12-21 13:36 Claris 阅读(306) 评论(0) 推荐(0) 编辑
摘要:左上角和右下角不四连通等价于左下角和右上角八连通枚举正方形的左上角,先二分出最大的边长,使得里面不含障碍物然后再二分出最小的边长,使得两部分连通,用前缀和判断这题WA了好久…一直对拍都没问题…于是去看原题,发现有SPJ…然后改了个枚举姿势就过了…#include#define N 1510int n... 阅读全文
posted @ 2014-12-19 14:20 Claris 阅读(355) 评论(0) 推荐(0) 编辑
摘要:对于树边显然只需要减少权值,对于非树边显然只需要增加权值设i不为树边,j为树边X[i]:i增加量X[j]:j减少量C[i]:修改1单位i的代价对于每条非树边i(u,v),在树上u到v路径上的所有边j都需要满足Wi+XiWjXjXi+XjWjWi最后我... 阅读全文
posted @ 2014-12-17 18:09 Claris 阅读(543) 评论(0) 推荐(0) 编辑
摘要:写个cmp然后sort就好了。cmp的话,需要快速知道两个串的lcp,于是倍增+Hash即可。#include#includetypedef long long ll;const int N=100010,M=18,P=1000000009;int n,i,j,k,f[N][M],a[N];char... 阅读全文
posted @ 2014-12-17 11:26 Claris 阅读(259) 评论(0) 推荐(0) 编辑
摘要:第一问:打表可得规律:当且仅当x&(xtypedef long long ll;struct mat{ ll a[2][2]; mat(){a[0][0]=a[0][1]=a[1][0]=a[1][1]=0;} mat operator*(mat b){ mat c; for(in... 阅读全文
posted @ 2014-12-15 18:21 Claris 阅读(834) 评论(0) 推荐(0) 编辑
摘要:有上下界的网络流T向S连容量为正无穷的边,将有源汇转化为无源汇每条边容量减去下界,设in[i]表示流入i的下界之和减去流出i的下界之和新建超级源汇SS,TT对于in[i]>0的点,SS向i连容量为in[i]的边对于in[i]0)$,则有解再求出以S,T为源汇的最大流即为答案#includeconst... 阅读全文
posted @ 2014-12-13 20:49 Claris 阅读(366) 评论(0) 推荐(0) 编辑
摘要:将S1与S2用#号拼接在一起形成S串将S3与S串跑KMP求出S3在S串中每次出现的位置l[i]对于S串每个后缀i,求出f[i]表示该串不包含S3串的最长前缀然后求出S串的后缀数组先从小到大扫描后缀数组,同时维护一个tmp表示S2中的串与现在的串的最长公共前缀,且没有出现S3,如果碰到一个S1的后缀,... 阅读全文
posted @ 2014-12-12 13:03 Claris 阅读(687) 评论(0) 推荐(0) 编辑
摘要:怎么3776又换题目了…换题目了…题目了…目了…了…SCC缩点后只有入度或者出度为0的点必须要放警察局假设一共有t-1个入度或者出度为0的SCCq[1]-q[t-1]表示这些SCC中点的个数q[t]表示剩下的点的个数f[i][j]表示前i个部分放了j个警察局的方案数,f[i][j]=sum(f[i-... 阅读全文
posted @ 2014-12-11 18:22 Claris 阅读(215) 评论(0) 推荐(0) 编辑
摘要:从大到小枚举答案与T串的lcp,然后贪心#include#includechar s[5010],t[5010],ans[5010];int n,m,i,j,a[128],b[128],flag;int main(){ scanf("%s%s",s,t); n=std::strlen(s),m=... 阅读全文
posted @ 2014-12-11 17:38 Claris 阅读(273) 评论(0) 推荐(0) 编辑
摘要:Manacher求出所有极长回文子串后,得到一堆线段,转化成线段覆盖问题预处理出g[i]表示左端点不超过i的右端点的最大值贪心地线段覆盖即可时间复杂度O(n)#include#include#include#define N 100010using namespace std;char a[N]... 阅读全文
posted @ 2014-12-11 12:55 Claris 阅读(313) 评论(0) 推荐(0) 编辑
摘要:从左边不能到达右边当且仅当存在一条与上下底边相连的分割线将它们分开设下底边为S,上底边为T,每个元件作为点,有公共部分的两个点互相连边最后拆点求最小割#include#include#includeusing namespace std;const int N=620,inf=~0U>>2;int ... 阅读全文
posted @ 2014-12-10 12:36 Claris 阅读(589) 评论(0) 推荐(0) 编辑
摘要:CNN+M=(N+M)!N!M!考虑求出ansmod的值10^9=2^9\times5^92^9为例,先预处理出1..2^9中不是2的倍数的数的前缀积s[],显然n!\bmod 2^9有着长度为2^9的循环节将答案表示成$a\... 阅读全文
posted @ 2014-12-07 20:13 Claris 阅读(398) 评论(0) 推荐(0) 编辑
摘要:这题显然是一个最小斯坦纳树的模型,直接上模板即可,就是正六边形比较恶心。#include#include#include#include#define rep(i,n) for(int i=0;iP;int R,n,m,k=4,f[N][1Q;int read(){ char ch; while... 阅读全文
posted @ 2014-12-07 15:33 Claris 阅读(192) 评论(0) 推荐(0) 编辑
摘要:将序列分成\sqrt{n}块,预处理出每两块之间的逆序对数,以及ap[i]表示前i块内数字出现次数的树状数组预处理:O(n\sqrt{n}\log n)修改时,ap[i]可以在O(\sqrt{n}\log n)复杂度内完成修改,然后考虑修改的位置对答案的贡献,可以发现相当于某一行、某一列... 阅读全文
posted @ 2014-12-03 18:22 Claris 阅读(423) 评论(0) 推荐(0) 编辑
摘要:由于没有换根操作,所以直接用Splay维护DFS括号序列即可。对于查询1到x路径和,就是已入栈的减去已出栈的。子树加相当于区间加。换父亲相当于一个区间的移动。本题非常卡常数,一开始直接扒3153的代码狂T不止,改写Splay后也是狂T不止,最后把Splay从数组储存改成结构体储存才AC。#inclu... 阅读全文
posted @ 2014-12-02 18:15 Claris 阅读(417) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示