摘要:
枚举直线,计算斜率,排序,统计答案。#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
阅读(193)
推荐(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)
摘要:
把点按纵坐标排序,依次枚举,把它作为原点,然后把之后的点极角排序,把叉积的公式稍微化简一下,处理个后缀和统计答案。#include#include#include#includeusing namespace std;#define N 3002typedef double db;typedef l...
阅读全文
posted @ 2015-03-27 13:58
AutSky_JadeK
阅读(235)
推荐(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
阅读(239)
推荐(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
阅读(196)
推荐(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
阅读(181)
推荐(0)
摘要:
极角排序后枚举每个点,计算其与原点连线的左侧的半平面内的点与其组成的三角形数(二分/尺取),这些都不是黄金三角形。补集转化,用平面内所有三角形的个数(C(n,3))减去这些即可。精度很宽松,几乎不用管。#include#include#includeusing namespace std;typed...
阅读全文
posted @ 2015-03-26 16:28
AutSky_JadeK
阅读(239)
推荐(0)
摘要:
网上到处都是题解,自己画个图也很好理解。虽然环的个数很多,但是都可以通过独立环之间异或出来,不用管。独立环求法:生成树之后,每次向图里添加非树边(u,v),则这个独立环的异或和为sum[u]^sum[v]^w(u,v)。sum[u]为从1到u的任意一条路径的异或和。#includeusing nam...
阅读全文
posted @ 2015-03-26 15:12
AutSky_JadeK
阅读(193)
推荐(0)
摘要:
经典的开关灯问题。高斯消元后矩阵对角线B[i][i]若是0,则第i个未知数是自由元(S个),它们可以任意取值,而让非自由元顺应它们,得到2S组解。枚举自由元取0/1,最终得到最优解。不知为何正着搜不行。#include#include#includeusing namespace std;#defi...
阅读全文
posted @ 2015-03-26 10:27
AutSky_JadeK
阅读(344)
推荐(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
阅读(206)
推荐(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
阅读(152)
推荐(0)
摘要:
因为只有最后被染上的颜色会造成影响,所以倒着处理,用并查集维护已经染色的区间的右端点,即fa[i]为i所在的已染色区间的右端点,这样可以保证O(n)的复杂度。#include#includeusing namespace std;#define N 1000001inline void P(int ...
阅读全文
posted @ 2015-03-24 20:11
AutSky_JadeK
阅读(209)
推荐(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
阅读(106)
推荐(0)
摘要:
由于每个点的状态受到其自身和周围四个点的影响,所以可以这样建立异或方程组:引用题解:http://hi.baidu.com/ofeitian/item/9899edce6dc6d3d297445264题目大意:给你一个5*6的矩阵,矩阵里每一个单元都有一个灯和一个开关,如果按下此开关,那么开关所在位...
阅读全文
posted @ 2015-03-18 09:36
AutSky_JadeK
阅读(264)
推荐(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
阅读(193)
推荐(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
阅读(130)
推荐(0)
摘要:
Xor方程组解的个数判定:——莫涛《高斯消元解Xor方程组》使用方程个数判定:消去第i个未知数时,都会记录距第i个方程最近的第i位系数不为0の方程是谁,这个的max就是使用方程个数。使用bitset加速。#include#include#include#includeusing namespace ...
阅读全文
posted @ 2015-03-17 15:24
AutSky_JadeK
阅读(375)
推荐(0)
摘要:
求圆神饶恕~>_< 根据半径相等的关系建立n+1个二次方程, 然后每个和前一个相减消去二次项,get n个线性方程。
阅读全文
posted @ 2015-03-17 10:01
AutSky_JadeK
阅读(230)
推荐(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
阅读(175)
推荐(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
阅读(206)
推荐(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
阅读(237)
推荐(0)
摘要:
仅有距根节点为奇数距离的节点的石子被移走对答案有贡献,∵即使偶数的石子被移走,迟早会被再移到奇数,而奇数被移走后,不一定能够在移到偶数(到根了)。最多移L个:石子数模(L+1),比较显然,也可以自己跑一跑奇数层的SG函数。#includeusing namespace std;#define N 1...
阅读全文
posted @ 2015-03-15 21:32
AutSky_JadeK
阅读(227)
推荐(0)
摘要:
bunDescription因为体育老师很喜欢等差数列,所以他要求学生们站队必须按身高站成等差数列。但是有些班级的学生无论如何也无法排成等差数列,于是体育老师从食堂买来了两种神奇的面包。吃一个第一种面包可以使身高增 1,吃一个第二种面包可以使身高减 1。你的任务是,对于某个班级,帮助老师安排哪些同学...
阅读全文
posted @ 2015-03-15 15:15
AutSky_JadeK
阅读(188)
推荐(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
阅读(381)
推荐(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
阅读(268)
推荐(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
阅读(294)
推荐(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
阅读(205)
推荐(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
阅读(286)
推荐(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
阅读(300)
推荐(0)
摘要:
某个状态的SG函数被定义为 除该状态能一步转移到的状态的SG值以外的最小非负整数。有如下性质:从SG值为x的状态出发,可以转移到SG值为0,1,...,x-1的状态。不论SG值增加与否,我们都可以将当前所有子游戏的SG值异或起来从而判断胜负状态。常采用记忆化搜索来计算SG函数。#include#in...
阅读全文
posted @ 2015-03-13 20:09
AutSky_JadeK
阅读(202)
推荐(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
阅读(179)
推荐(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
阅读(203)
推荐(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
阅读(233)
推荐(0)
摘要:
第一问置换群裸题。第二问单独考虑某个循环,任意交换两个元素,稍微画一下就会发现,把该循环拆成了2个,剩下所需的交换次数减少了1,也就是说,第一步我们任意交换,都能够保证交换次数最少。于是一个循环的答案就是n*(n-1)/2,把所有的加起来即可。进而我们发现,在剩下的步骤里面,我们只需在拆出来的两个循...
阅读全文
posted @ 2015-03-10 21:21
AutSky_JadeK
阅读(162)
推荐(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
阅读(295)
推荐(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
阅读(233)
推荐(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
阅读(309)
推荐(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
阅读(200)
推荐(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
阅读(154)
推荐(0)
摘要:
如果当前状态可以根据某条轴线把硬币分成两个相同的组,则当前状态是必败态。因为不论在其中一组我们采取任何策略,对方都可以采取相同的策略,如此循环,对方必然抽走最后一枚硬币。因为我们先手,因此抽完后盘面变成了一个n-1或n-2长度的链,此时对方只需按照奇偶性把某个位置的硬币抽走,就可以让我们达到必败态。...
阅读全文
posted @ 2015-03-10 08:27
AutSky_JadeK
阅读(184)
推荐(0)