03 2015 档案

摘要:http://hzwer.com/6330.html#include#include#includeusing namespace std;#define N 100001#define EPS 0.00000001typedef double db;const db PI=acos(-1.0);s... 阅读全文
posted @ 2015-03-30 17:27 AutSky_JadeK 阅读(186) 评论(0) 推荐(0)
摘要:#include#include#includeusing namespace std;#define N 5001struct Point{int x,y;}p[N],bao[N];bool operator 1&&Cross(bao[en]-bao[en-1],p[i]-bao[en])half... 阅读全文
posted @ 2015-03-30 15:38 AutSky_JadeK 阅读(144) 评论(0) 推荐(0)
摘要:枚举断点,哈希判断。#includeusing namespace std;typedef unsigned long long ull;ull hs,hs1,hs2,seeds[1000010],hsgoal;int n;int del=-1;char s[2000002],s2[2000002]... 阅读全文
posted @ 2015-03-30 10:06 AutSky_JadeK 阅读(280) 评论(0) 推荐(0)
摘要:设置一个值K。dK:暴力。最优时间复杂度的伪计算:O(n*K*logn(建树)+m*logn(询问类型1)+m*n/K(询问类型2)+m*K*logn(修改))。求此函数最小值,易得,当K=sqrt(m/logn)时,时间复杂度:O(m*sqrt(m*logn))。空间复杂度:O(n*sqrt(m/... 阅读全文
posted @ 2015-03-29 19:07 AutSky_JadeK 阅读(284) 评论(0) 推荐(0)
摘要:考虑“删除后图仍连通”,即其不是无向图的桥(bridge),可以用Tarjan算法预处理,这里不赘述。【算法一】枚举删除的是哪条边,然后枚举起点,暴搜,统计答案。可以通过0、1号测试点。预计得分:20分。【算法二】枚举删除的是哪条边,接着,①枚举起点,∵op=0,∴裸最短路,Heap-dijkstr... 阅读全文
posted @ 2015-03-29 19:04 AutSky_JadeK 阅读(255) 评论(0) 推荐(0)
摘要:【算法一】暴力。可以通过第0、1号测试点。预计得分:20分。【算法二】经典问题:区间众数,数据范围也不是很大,因此我们可以:①分块,离散化,预处理出:前i块中x出现的次数(差分);第i块到第j块中的众数是谁,出现了多少次。询问的时候,对于整块的部分直接获得答案;对于零散的部分,暴力统计每个数出现 的... 阅读全文
posted @ 2015-03-29 19:03 AutSky_JadeK 阅读(772) 评论(0) 推荐(0)
摘要:枚举直线,计算斜率,排序,统计答案。#include#include#includeusing namespace std;#define EPS 0.00000001#define INF 99999999999999999999.0#define N 201typedef double db;i... 阅读全文
posted @ 2015-03-27 21:28 AutSky_JadeK 阅读(191) 评论(0) 推荐(0)
摘要:缩成DAGf(i)表示以i为起点的最长路#include#include#include#includeusing namespace std;#define N 100001int n,To[N],mem[N];vectorvs;int v[N],first[N],next[N],en;void ... 阅读全文
posted @ 2015-03-27 16:44 AutSky_JadeK 阅读(170) 评论(0) 推荐(0)
摘要:把点按纵坐标排序,依次枚举,把它作为原点,然后把之后的点极角排序,把叉积的公式稍微化简一下,处理个后缀和统计答案。#include#include#include#includeusing namespace std;#define N 3002typedef double db;typedef l... 阅读全文
posted @ 2015-03-27 13:58 AutSky_JadeK 阅读(233) 评论(0) 推荐(0)
摘要:标准差=√(Σ(xi-xba)2/n)=Σ(xi)2+xba*n-2*xba*sum。只需最小化每个分割出来的矩阵的平方和即可。#include#include#include#includeusing namespace std;#define INF 2000000000typedef doub... 阅读全文
posted @ 2015-03-27 11:12 AutSky_JadeK 阅读(238) 评论(0) 推荐(0)
摘要:f(l,r,c)表示sl...sr能否被合成字符c。#include#includeusing namespace std;int m[95],n;int mem[201][201][95];char s[201],To[95][17][3];bool equal(char a[],int la,i... 阅读全文
posted @ 2015-03-27 09:12 AutSky_JadeK 阅读(193) 评论(0) 推荐(0)
摘要:暴力#include#include#includeusing namespace std;#define N 701const int dx[]={0,0,-1,1},dy[]={-1,1,0,0};int n,mem[N][N],a[N][N],m;bool cant[N][N];int f(i... 阅读全文
posted @ 2015-03-26 21:52 AutSky_JadeK 阅读(180) 评论(0) 推荐(0)
摘要:极角排序后枚举每个点,计算其与原点连线的左侧的半平面内的点与其组成的三角形数(二分/尺取),这些都不是黄金三角形。补集转化,用平面内所有三角形的个数(C(n,3))减去这些即可。精度很宽松,几乎不用管。#include#include#includeusing namespace std;typed... 阅读全文
posted @ 2015-03-26 16:28 AutSky_JadeK 阅读(236) 评论(0) 推荐(0)
摘要:网上到处都是题解,自己画个图也很好理解。虽然环的个数很多,但是都可以通过独立环之间异或出来,不用管。独立环求法:生成树之后,每次向图里添加非树边(u,v),则这个独立环的异或和为sum[u]^sum[v]^w(u,v)。sum[u]为从1到u的任意一条路径的异或和。#includeusing nam... 阅读全文
posted @ 2015-03-26 15:12 AutSky_JadeK 阅读(189) 评论(0) 推荐(0)
摘要:经典的开关灯问题。高斯消元后矩阵对角线B[i][i]若是0,则第i个未知数是自由元(S个),它们可以任意取值,而让非自由元顺应它们,得到2S组解。枚举自由元取0/1,最终得到最优解。不知为何正着搜不行。#include#include#includeusing namespace std;#defi... 阅读全文
posted @ 2015-03-26 10:27 AutSky_JadeK 阅读(340) 评论(0) 推荐(0)
摘要:引用题解:http://blog.csdn.net/PoPoQQQ/article/details/39829237注意评论区。#includeusing namespace std;#define MOD 10086#define N 100001int n,a[N],m,base[32],k,r... 阅读全文
posted @ 2015-03-25 21:18 AutSky_JadeK 阅读(201) 评论(0) 推荐(0)
摘要:p2460:#include#includeusing namespace std;#define N 1001typedef long long ll;struct Point{ll p;int v;}a[N];bool operator b.v;}int n,ans;ll base[64];in... 阅读全文
posted @ 2015-03-25 11:09 AutSky_JadeK 阅读(150) 评论(0) 推荐(0)
摘要:因为只有最后被染上的颜色会造成影响,所以倒着处理,用并查集维护已经染色的区间的右端点,即fa[i]为i所在的已染色区间的右端点,这样可以保证O(n)的复杂度。#include#includeusing namespace std;#define N 1000001inline void P(int ... 阅读全文
posted @ 2015-03-24 20:11 AutSky_JadeK 阅读(205) 评论(0) 推荐(0)
摘要:#include#includeusing namespace std;#define INF 2147483647#define N 20001#define lson rt>1]=v[i]; dw[v[i]]=bw[i]; fa[v[i]]=U; dep[v[i]]=dep[U... 阅读全文
posted @ 2015-03-19 17:09 AutSky_JadeK 阅读(103) 评论(0) 推荐(0)
摘要:由于每个点的状态受到其自身和周围四个点的影响,所以可以这样建立异或方程组:引用题解:http://hi.baidu.com/ofeitian/item/9899edce6dc6d3d297445264题目大意:给你一个5*6的矩阵,矩阵里每一个单元都有一个灯和一个开关,如果按下此开关,那么开关所在位... 阅读全文
posted @ 2015-03-18 09:36 AutSky_JadeK 阅读(259) 评论(0) 推荐(0)
摘要:引用题解:http://blog.csdn.net/popoqqq/article/details/38823457题目大意:给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。有... 阅读全文
posted @ 2015-03-18 07:22 AutSky_JadeK 阅读(191) 评论(0) 推荐(0)
摘要:因为我们可以通过把某一行读到末尾来获取真正的K,所以把它和假K异或之后就是之前联通的次数(异或的逆运算为其本身)。最后一次的暴力一下。#include#includeusing namespace std;#define N 100001#define M 500001int n,m,K,q,ans... 阅读全文
posted @ 2015-03-17 17:39 AutSky_JadeK 阅读(125) 评论(0) 推荐(0)
摘要:Xor方程组解的个数判定:——莫涛《高斯消元解Xor方程组》使用方程个数判定:消去第i个未知数时,都会记录距第i个方程最近的第i位系数不为0の方程是谁,这个的max就是使用方程个数。使用bitset加速。#include#include#include#includeusing namespace ... 阅读全文
posted @ 2015-03-17 15:24 AutSky_JadeK 阅读(373) 评论(0) 推荐(0)
摘要:求圆神饶恕~>_< 根据半径相等的关系建立n+1个二次方程, 然后每个和前一个相减消去二次项,get n个线性方程。 阅读全文
posted @ 2015-03-17 10:01 AutSky_JadeK 阅读(230) 评论(0) 推荐(0)
摘要:差分后与阶梯博弈很类似。#includeusing namespace std;int n,T,a[1001],ans;int main(){ scanf("%d",&T); for(;T;--T) { ans=0; scanf("%d",&n); for(int i=1;i=... 阅读全文
posted @ 2015-03-16 11:15 AutSky_JadeK 阅读(173) 评论(0) 推荐(0)
摘要:树链剖分求lca模板。O(log(n)),就是不倍增嘛~#include#includeusing namespace std;#define N 30001int n,m,ans;int v[Nsiz[son[U]]) son[U]=v[i]; }}void df2(int... 阅读全文
posted @ 2015-03-16 10:32 AutSky_JadeK 阅读(205) 评论(0) 推荐(0)
摘要:块状树,每个块的根记录一下当前块内距块根为奇数距离的异或和和偶数距离的异或和,询问的时候讨论一下即可。总的节点数可能超过50000。#include#includeusing namespace std;#define N 100001int n,m,L,a[N];int en,v[N<<1],ne... 阅读全文
posted @ 2015-03-16 08:22 AutSky_JadeK 阅读(236) 评论(0) 推荐(0)
摘要:仅有距根节点为奇数距离的节点的石子被移走对答案有贡献,∵即使偶数的石子被移走,迟早会被再移到奇数,而奇数被移走后,不一定能够在移到偶数(到根了)。最多移L个:石子数模(L+1),比较显然,也可以自己跑一跑奇数层的SG函数。#includeusing namespace std;#define N 1... 阅读全文
posted @ 2015-03-15 21:32 AutSky_JadeK 阅读(221) 评论(0) 推荐(0)
摘要:bunDescription因为体育老师很喜欢等差数列,所以他要求学生们站队必须按身高站成等差数列。但是有些班级的学生无论如何也无法排成等差数列,于是体育老师从食堂买来了两种神奇的面包。吃一个第一种面包可以使身高增 1,吃一个第二种面包可以使身高减 1。你的任务是,对于某个班级,帮助老师安排哪些同学... 阅读全文
posted @ 2015-03-15 15:15 AutSky_JadeK 阅读(187) 评论(0) 推荐(0)
摘要:乘除都在150以内,分解质因数后发现只有35个,建立35个树状数组/线段树,做区间加、区间查询,最后快速幂起来。#include#includeusing namespace std;#define N 50001typedef long long ll;ll Quick_Pow(ll a,ll p... 阅读全文
posted @ 2015-03-14 19:25 AutSky_JadeK 阅读(380) 评论(0) 推荐(0)
摘要:一开始就必胜的特判一下。#include#include#include#includeusing namespace std;int T,n,X[1001],Y[1001],SG[101][101];int sg(int x,int y){ if(SG[x][y]!=-1) return SG[x... 阅读全文
posted @ 2015-03-14 11:39 AutSky_JadeK 阅读(265) 评论(0) 推荐(0)
摘要:因为第i个瓶子里的所有豆子都是等价的,设sg(i)表示第i个瓶子的sg值,可以转移到sg(j)^sg(k)(i#include#includeusing namespace std;int T,n,a[21],SG[21];int sg(int x){ if(SG[x]!=-1) return SG... 阅读全文
posted @ 2015-03-14 10:39 AutSky_JadeK 阅读(293) 评论(0) 推荐(0)
摘要:枚举第一步可能达到的状态,判断是否是必败态即可。#include#include#includeusing namespace std;int SG[1001],a[1001],b[1001],n,m,all;int sg(int x){ if(SG[x]!=-1) return SG[x]; se... 阅读全文
posted @ 2015-03-14 09:26 AutSky_JadeK 阅读(204) 评论(0) 推荐(0)
摘要:由于异或运算满足结合律,我们把当前状态的SG函数定义为 它所能切割成的所有纸片对的两两异或和之外的最小非负整数。#include#include#includeusing namespace std;int n,m,SG[201][201];int sg(int x,int y){ if(SG[x]... 阅读全文
posted @ 2015-03-14 09:10 AutSky_JadeK 阅读(283) 评论(0) 推荐(0)
摘要:记最开始的根为root,换根之后,对于当前的根rtnow和询问子树U而言,①rtnow==U,询问整棵树②fa[rtnow]==U,询问除了rtnow所在子树以外的整棵树③rtnow在U的子树里,且距离大于1,询问除了rtnow的除了其祖先是U的儿子的祖先的子树以外的整棵树④rtnow不在U的子树里... 阅读全文
posted @ 2015-03-14 07:34 AutSky_JadeK 阅读(299) 评论(0) 推荐(0)
摘要:某个状态的SG函数被定义为 除该状态能一步转移到的状态的SG值以外的最小非负整数。有如下性质:从SG值为x的状态出发,可以转移到SG值为0,1,...,x-1的状态。不论SG值增加与否,我们都可以将当前所有子游戏的SG值异或起来从而判断胜负状态。常采用记忆化搜索来计算SG函数。#include#in... 阅读全文
posted @ 2015-03-13 20:09 AutSky_JadeK 阅读(201) 评论(0) 推荐(0)
摘要:这道题告诉我们:树链剖分的重标号就是dfs序。#include#includeusing namespace std;#define N 100001#define lson rt>1)); sumv[rt>1); delta[rt]=0; }}void update(int ql,int ... 阅读全文
posted @ 2015-03-12 21:39 AutSky_JadeK 阅读(178) 评论(0) 推荐(0)
摘要:#include#include#includeusing namespace std;#define MAXN 10001#define INF 2147483647typedef pair Point;int n,m,Ks[101];bool vis[101];int v[MAXN<<1],w[... 阅读全文
posted @ 2015-03-11 10:22 AutSky_JadeK 阅读(201) 评论(0) 推荐(0)
摘要:#include#includeusing namespace std;#define N 100001int sum[N],a[N],n,m,last,op[N],Xs[N],Ys[N];int main(){ scanf("%d",&n); for(int i=1;i=Xs[i]&&Xs[j]<... 阅读全文
posted @ 2015-03-11 07:14 AutSky_JadeK 阅读(231) 评论(0) 推荐(0)
摘要:第一问置换群裸题。第二问单独考虑某个循环,任意交换两个元素,稍微画一下就会发现,把该循环拆成了2个,剩下所需的交换次数减少了1,也就是说,第一步我们任意交换,都能够保证交换次数最少。于是一个循环的答案就是n*(n-1)/2,把所有的加起来即可。进而我们发现,在剩下的步骤里面,我们只需在拆出来的两个循... 阅读全文
posted @ 2015-03-10 21:21 AutSky_JadeK 阅读(160) 评论(0) 推荐(0)
摘要:在模意义下枚举m进行验证,多设置几个模数,而且小一些,利用f(x+p)%p=f(x)%p降低计算次数。UOJ AC,bzoj OLE。#include#include#include#includeusing namespace std;#define MAXV 4951vectorv;typede... 阅读全文
posted @ 2015-03-10 20:25 AutSky_JadeK 阅读(294) 评论(0) 推荐(0)
摘要:orz PoPoQQQ。本来蒟蒻以为这种离散化以后就对应不起来的题不能权值分块搞的说。……结果,实际上>n的权值不会对答案作出贡献。#include#include#includeusing namespace std;#define N 200002#define BN 452int n,m,nu... 阅读全文
posted @ 2015-03-10 17:31 AutSky_JadeK 阅读(231) 评论(0) 推荐(0)
摘要:这题用了三种算法写:分块+二分:O(n*sqrt(n*log(n))函数式权值分块:O(n*sqrt(n))带修莫队+权值分块:O(n5/3)结果……复杂度越高的实际上跑得越快……最后这个竟然进第一页了……#include#include#include#includeusing namespace... 阅读全文
posted @ 2015-03-10 14:53 AutSky_JadeK 阅读(304) 评论(0) 推荐(0)
摘要:块大小为n2/3。把询问和修改分开。每次两个询问之间的修改进行暴力转移,如果修改在上一次询问的区间里,就会对当前状态形成影响。好慢。#include#include#include#includeusing namespace std;#define N 10001int num[N],n,m,b[... 阅读全文
posted @ 2015-03-10 11:30 AutSky_JadeK 阅读(199) 评论(2) 推荐(0)
摘要:假设当前b>a。一、b%a==0 必胜二、b2*a,假设x是使得b-ax#includeusing namespace std;long long a,b;int main(){ while(1) { scanf("%lld%lld",&a,&b); if(!a&&!b) break... 阅读全文
posted @ 2015-03-10 08:48 AutSky_JadeK 阅读(153) 评论(0) 推荐(0)
摘要:如果当前状态可以根据某条轴线把硬币分成两个相同的组,则当前状态是必败态。因为不论在其中一组我们采取任何策略,对方都可以采取相同的策略,如此循环,对方必然抽走最后一枚硬币。因为我们先手,因此抽完后盘面变成了一个n-1或n-2长度的链,此时对方只需按照奇偶性把某个位置的硬币抽走,就可以让我们达到必败态。... 阅读全文
posted @ 2015-03-10 08:27 AutSky_JadeK 阅读(183) 评论(0) 推荐(0)
摘要:考虑树状数组区间修改(只对其子树的答案有影响)点查询,每个点记录的是它到根路径上的权值异或和。答案时query(L)^query(R)^a[lca]。这种方法在支持区间加法、减法的树上询问的时候可以避免树链剖分。可能爆栈,考虑手动开栈。(诶诶Tarjan预处理lca的时候怎么没手动开栈?不要在意^_... 阅读全文
posted @ 2015-03-09 21:26 AutSky_JadeK 阅读(474) 评论(0) 推荐(0)
摘要:预处理出每个点到根节点的土路数,插到一个树状数组里,然后每次修改只会对子树中的节点造成影响,于是相当于区间修改、点查询了。#includeusing namespace std;#define N 250001int n,en,v[N<<1],next[N<<1],first[N],m;void A... 阅读全文
posted @ 2015-03-09 14:48 AutSky_JadeK 阅读(142) 评论(0) 推荐(0)
摘要:裸题,树状数组区间修改+单点查询。当然要稍微讨论一下链的左右端点是否修改的情况咯。#include#include#includeusing namespace std;#define N 300001int en,v[Nsiz[son[U]]) son[U]=v[i]; ... 阅读全文
posted @ 2015-03-09 13:53 AutSky_JadeK 阅读(171) 评论(0) 推荐(0)
摘要:离线后以宗教为第一关键字,操作时间为第二关键字排序。块状树,线下ac,线上tle……#include#include#include#include#includeusing namespace std;queueq;int f,c;inline void R(int &x){ c=0;f=1... 阅读全文
posted @ 2015-03-09 07:57 AutSky_JadeK 阅读(212) 评论(0) 推荐(0)
摘要:裸题,但是因为权在边上,所以要先把边权放到这条边的子节点上,然后进行链更新/查询的时候不能更新/查询其lca。#include#include#includeusing namespace std;#define N 100001#define BN 320#define INF 214748364... 阅读全文
posted @ 2015-03-08 17:33 AutSky_JadeK 阅读(251) 评论(0) 推荐(0)
摘要:裸题,直接上。复杂度O(n*sqrt(n)*log(n))。//Num[i]表示树中的点i在函数式权值分块中对应的点//Map[i]表示函数式权值分块中的点i在树中对应的点#include#include#includeusing namespace std;#define N 80001#defi... 阅读全文
posted @ 2015-03-08 11:11 AutSky_JadeK 阅读(197) 评论(0) 推荐(0)
摘要:先把整个矩阵处理成b[n][m-K+1]、c[n][m-K+1]大小的两个矩阵,分别存储每行每K个数中的最大、最小值,然后再通过b、c处理出d、e分别表示K*K大小的子矩阵中的最大、最小值即可。单调队列暴力。#include#includeusing namespace std;#define N ... 阅读全文
posted @ 2015-03-07 09:47 AutSky_JadeK 阅读(210) 评论(0) 推荐(0)
摘要:用两个单调队列维护序列中的最大值和最小值即可。poi~#include#includeusing namespace std;int m,n,head[2]={1,1},tail[2]={1,1},q[2][3000001],a[3000001],ans;int main(){ scanf("%d%... 阅读全文
posted @ 2015-03-07 07:47 AutSky_JadeK 阅读(188) 评论(0) 推荐(0)
摘要:枚举每个数,计算以其为次大数的最大区间,显然,只需要用这个区间的答案 对 答案进行更新即可。找到每个数右侧、左侧第1、2个比它大的数,然后分类讨论一下即可。找到的过程中把数sort以后,从大到小把它们的位置插入set,稍微维护一下即可。#include#include#includeusing na... 阅读全文
posted @ 2015-03-07 06:53 AutSky_JadeK 阅读(195) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2015-03-06 15:00 AutSky_JadeK 阅读(33) 评论(0) 推荐(0)
摘要:对原序列取前缀异或值,变成pre[1...N],然后询问等价于求max{a[N]^x^pre[i]}(l-1#define INF 2147483647#define N 300001#define MAXBIT 25int root[N=0;--i) { int Bit=(... 阅读全文
posted @ 2015-03-06 11:30 AutSky_JadeK 阅读(167) 评论(0) 推荐(0)
摘要:总算找到个能看懂的了,orz Lavender。#define INF 2147483647#define N 100001#define MAXBIT 31int root[N],ch[N*(MAXBIT+1)][2],sz[N*(MAXBIT+1)],tot;int query(int L,in... 阅读全文
posted @ 2015-03-04 16:52 AutSky_JadeK 阅读(191) 评论(0) 推荐(0)
摘要:先把两个矩阵全都mod3。S[i][j][k]表示第i(0/1)个矩阵的行/列的第k位是不是j(1/2)。然后如果某两个矩乘对应位上为1、1,乘出来是1;1、2:2;2、1:2;2、2:1。然后分这四种情况把bitset and 起来,然后用count()数一下个数,计算下对答案矩阵该位置的贡献即可... 阅读全文
posted @ 2015-03-03 21:00 AutSky_JadeK 阅读(131) 评论(0) 推荐(0)
摘要:模板题。S[i][j]表示i是否存在于第j个集合里。妈蛋poj差点打成poi(波兰无关)是不是没救了。#include#includeusing namespace std;int n,m,x,y;bitsetS[10001];int main(){ scanf("%d",&n); for(int ... 阅读全文
posted @ 2015-03-03 20:11 AutSky_JadeK 阅读(128) 评论(0) 推荐(0)
摘要:C++ bitset类的使用与简介 有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值。位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法。标准库提供了bitset类使得处理位集合更容易一些。要使用bitset类就必须要包含相关的头文件。在本书提供的例子中,假... 阅读全文
posted @ 2015-03-03 18:50 AutSky_JadeK 阅读(314) 评论(0) 推荐(0)
摘要:枚举每个文章里已经在Trie中被标记为可能是分割处的字符,然后再从此处跑Trie,继续向后标记。由于单词数很少,因此复杂度可以接受,O(n*m*Len)。#include#includeusing namespace std;int n,m,L;char s[1024*1024+100];int c... 阅读全文
posted @ 2015-03-02 16:30 AutSky_JadeK 阅读(233) 评论(0) 推荐(0)

TVアニメ「Charlotte(シャーロット)」公式サイト TVアニメ「Charlotte(シャーロット)」公式サイト