摘要:
考虑树状数组区间修改(只对其子树的答案有影响)点查询,每个点记录的是它到根路径上的权值异或和。答案时query(L)^query(R)^a[lca]。这种方法在支持区间加法、减法的树上询问的时候可以避免树链剖分。可能爆栈,考虑手动开栈。(诶诶Tarjan预处理lca的时候怎么没手动开栈?不要在意^_...
阅读全文
posted @ 2015-03-09 21:26
AutSky_JadeK
阅读(474)
推荐(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
阅读(143)
推荐(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
阅读(173)
推荐(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
阅读(214)
推荐(0)
摘要:
裸题,但是因为权在边上,所以要先把边权放到这条边的子节点上,然后进行链更新/查询的时候不能更新/查询其lca。#include#include#includeusing namespace std;#define N 100001#define BN 320#define INF 214748364...
阅读全文
posted @ 2015-03-08 17:33
AutSky_JadeK
阅读(253)
推荐(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
阅读(199)
推荐(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)
摘要:
用两个单调队列维护序列中的最大值和最小值即可。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
阅读(189)
推荐(0)
摘要:
枚举每个数,计算以其为次大数的最大区间,显然,只需要用这个区间的答案 对 答案进行更新即可。找到每个数右侧、左侧第1、2个比它大的数,然后分类讨论一下即可。找到的过程中把数sort以后,从大到小把它们的位置插入set,稍微维护一下即可。#include#include#includeusing na...
阅读全文
posted @ 2015-03-07 06:53
AutSky_JadeK
阅读(197)
推荐(0)
posted @ 2015-03-06 15:00
AutSky_JadeK
阅读(33)
推荐(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
阅读(169)
推荐(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
阅读(192)
推荐(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
阅读(133)
推荐(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
阅读(129)
推荐(0)
摘要:
C++ bitset类的使用与简介 有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值。位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法。标准库提供了bitset类使得处理位集合更容易一些。要使用bitset类就必须要包含相关的头文件。在本书提供的例子中,假...
阅读全文
posted @ 2015-03-03 18:50
AutSky_JadeK
阅读(315)
推荐(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
阅读(235)
推荐(0)
摘要:
f(i)=min{f(j)+(D(j)using namespace std;#define N 1000001struct Point{int x,y;};bool operator =b.y;}int n,m,K,q[N];Point dp[N];int main(){ scanf("%d",&...
阅读全文
posted @ 2015-02-28 20:46
AutSky_JadeK
阅读(184)
推荐(0)
摘要:
#includeusing namespace std;#define N 1000001int n,K,a[N],head=1,tail=1,q[N],ans[N];int main(){ scanf("%d%d",&n,&K); for(int i=1;i=head) --tail; q[...
阅读全文
posted @ 2015-02-28 16:31
AutSky_JadeK
阅读(146)
推荐(0)
摘要:
因为所有点权都是正的,所以对每个结点u来说,每条从根到它的路径上只有最多一个结点v符合d(u,v)=S。所以我们可以边dfs边把每个结点的前缀和pre[u]存到一个数据结构里面,同时查询pre[u]-S是否存在。数据结构用set、hashtable(随便卡)(需要支持删除,由于总是删掉最后一个,因此...
阅读全文
posted @ 2015-02-18 15:18
AutSky_JadeK
阅读(208)
推荐(0)
摘要:
模板题。#include#include#include#includeusing namespace std;#define MAXN 20001#define INF 2147483647typedef pair Point;int n,K,ans,T[3];int v[MAXN<<1],w[M...
阅读全文
posted @ 2015-02-16 09:08
AutSky_JadeK
阅读(135)
推荐(0)
摘要:
同poj1741。换了个更快的姿势,不会重复统计然后再减掉什么的啦~#include#include#includeusing namespace std;#define MAXN 40001#define INF 2147483647typedef pair Point;int n,K,ans;i...
阅读全文
posted @ 2015-02-15 20:35
AutSky_JadeK
阅读(207)
推荐(0)
摘要:
给nlog2n随便过的跪了,不得已弄了个哈希表伪装成nlogn(当然随便卡,好孩子不要学)……不过为啥哈希表的大小开小点就RE啊……?必须得超过数据范围一大截才行……谜#include#include#includeusing namespace std;int f,c;inline void R(...
阅读全文
posted @ 2015-02-15 20:26
AutSky_JadeK
阅读(153)
推荐(0)
摘要:
思路比较裸,但是要把答案存到哈希表里面,这里需要一定技巧,否则会被K=1且点权全是1的数据卡飞。预处理乘法逆元。TLE了一天。换了种点分治的姿势……#pragma comment(linker,"/STACK:102400000,102400000")#include#include#include...
阅读全文
posted @ 2015-02-15 10:39
AutSky_JadeK
阅读(195)
推荐(0)
摘要:
求树上点权积为立方数的路径数。显然,分解质因数后,若所有的质因子出现的次数都%3==0,则该数是立方数。于是在模意义下暴力统计即可。当然,为了不MLE/TLE,我们不能存一个30长度的数组,而要压成一个long long。存储状态用map即可,貌似哈希表可以随便卡掉……?手动开栈……当然这样有可能M...
阅读全文
posted @ 2015-02-14 09:08
AutSky_JadeK
阅读(227)
推荐(0)
摘要:
点分治好题。①手动开栈。②dp预处理每个点被哪个市场控制,及其距离是多少,记作pair数组p。③设dis[u].first为u到重心s的距离,dis[u].second=u,到在统计的时候,若dis[u] 3 #include 4 #include 5 #include 6 using na...
阅读全文
posted @ 2015-02-13 15:22
AutSky_JadeK
阅读(337)
推荐(0)
摘要:
三道题都很类似。给出1741的代码#include#include#includeusing namespace std;#define MAXN 10001typedef pair Point;int n,K,ans;int v[MAXN<<1],w[MAXN<<1],first[MAXN],ne...
阅读全文
posted @ 2015-02-11 12:42
AutSky_JadeK
阅读(143)
推荐(0)
摘要:
3.千石抚子的三维积木(nadeko.cpp/in/out)3.5s512MB10*10=100分p.s.本题含有一些(本人)黑历史,请自动过滤题目背景…==自从蛇切绳被搞掉之后,抚子认识到普通的蛇其实是很和谐的东西。于是她开始养蛇,有天在家无聊就开始用蛇堆积木。由于她是驯蛇高手所以它们都很听话堆上...
阅读全文
posted @ 2015-02-10 07:30
AutSky_JadeK
阅读(247)
推荐(0)
摘要:
如题。#include#include#includeusing namespace std;#define N 200001#define BN 451int n,m,a[N],b[N],sumv[BN],l[N],num[N],num2[N],Lim,siz[BN],anss[N];struct...
阅读全文
posted @ 2015-01-27 16:22
AutSky_JadeK
阅读(180)
推荐(0)
摘要:
学习这位神犇的:http://blog.csdn.net/jiangyuze831/article/details/41476865注意:①排序时第一关键字是左端点所在块编号(块状树),第二关键字是右端点dfs序。②维护的当前链不能包括lca(l,r),但最后要计算上lca(l,r)的答案。③对l-...
阅读全文
posted @ 2015-01-25 13:37
AutSky_JadeK
阅读(208)
推荐(0)
摘要:
#includeusing namespace std;int T,n,m,x,y;long long sum[100001],ans,d[100001];int main(){ scanf("%d",&T); for(;T;--T) { scanf("%d%d",&n,&m); f...
阅读全文
posted @ 2015-01-25 07:31
AutSky_JadeK
阅读(181)
推荐(0)
摘要:
对一棵树黑白染色一定符合题意。图一定有生成树。因此,仅有一个孤立节点的联通块不合题意。DFS。#includeusing namespace std;int n,m,en,x,y,v[1000001],first[500001],next[1000001],cnt;bool vis[500001];...
阅读全文
posted @ 2015-01-25 07:29
AutSky_JadeK
阅读(182)
推荐(0)
摘要:
类似某noip国王游戏。考虑交换两个题目的顺序,仅会对这两个题目的贡献造成影响。于是sort,比较时计算两个题目对答案的贡献,较小的放在前面。#include#includeusing namespace std;typedef long long ll;struct Point{ll T,K;}a...
阅读全文
posted @ 2015-01-24 21:29
AutSky_JadeK
阅读(157)
推荐(0)
摘要:
#includeusing namespace std;int T=0;long long h,a,b,k;int main(){ freopen("bzoj3856.in","r",stdin); while(1) { scanf("%lld%lld%lld%lld",&h,&a,...
阅读全文
posted @ 2015-01-24 18:42
AutSky_JadeK
阅读(112)
推荐(0)
摘要:
不带修改主席树裸题莫队+权值分块裸题。复杂度O(m*sqrt(n))。P.S.题目描述坑爹,第二个数是权值的范围。#include#include#includeusing namespace std;#define N 300001#define M 10001int f,c;inline voi...
阅读全文
posted @ 2015-01-24 15:00
AutSky_JadeK
阅读(227)
推荐(0)
摘要:
由于子弹的轨迹是可逆的,因此我们可以枚举所有敌人的位置,然后统计他们能打到的位置,这些位置也就是能打到他们的位置咯。O(n*k)。#includeusing namespace std;int n,m,a[101][101],x,y,ans;int main(){ scanf("%d%d",&n,&...
阅读全文
posted @ 2015-01-24 14:07
AutSky_JadeK
阅读(196)
推荐(0)
摘要:
引用题解:http://hzwer.com/5153.html当然,二分可以换成哈希表。#include#include#includeusing namespace std;#define MOD 2501typedef unsigned long long ull;const ull seed1...
阅读全文
posted @ 2015-01-24 11:41
AutSky_JadeK
阅读(226)
推荐(0)
摘要:
引用题解:http://blog.csdn.net/popoqqq/article/details/41084047#include#includeusing namespace std;typedef unsigned long long ull;int n,m,a,b,q;const ull s...
阅读全文
posted @ 2015-01-24 11:11
AutSky_JadeK
阅读(467)
推荐(0)
摘要:
#include#includeusing namespace std;typedef vector::iterator VER;#define MOD 100007vectorv[MOD];int n,m,t;int main(){ scanf("%d%d",&n,&m); for(int i=1...
阅读全文
posted @ 2015-01-23 22:04
AutSky_JadeK
阅读(178)
推荐(0)
摘要:
二分答案,然后搞出hash值扔到哈希表里。期望复杂度O(n*log(n))。next数组版哈希表#include#includeusing namespace std;typedef unsigned long long ull;const ull seed=29;#define MOD 2007u...
阅读全文
posted @ 2015-01-23 21:34
AutSky_JadeK
阅读(192)
推荐(0)
摘要:
#include#include#includeusing namespace std;#define N 50001#define SQRT 227int n,m,xs[N],ys[N],ks[N],op[N],en,ma[100001],en2,a[100001];int num[N],l[SQ...
阅读全文
posted @ 2015-01-21 17:34
AutSky_JadeK
阅读(219)
推荐(0)