
树剖LCT
huanghongxun
这个作者很懒,什么都没留下…
展开
-
树链剖分刷水
链改+子树查,和NOI 2015那道差不多吧。。#include #include #define FOR(i,j,k) for(i=j;i<=k;i++)typedef long long ll;using std::swap;ll read() { ll s = 0; char ch = getchar(); for (; ch '9'; ch = getchar(原创 2015-11-21 11:50:19 · 447 阅读 · 0 评论 -
CodeForces 487E UOJ 30 Tourists Tarjan + 树链剖分
#include #define FOR(i,j,k) for(i=j;i<=k;i++)int read() { int s = 0, f = 1; char ch = getchar(); for (; '0' > ch || ch < '9'; ch = getchar()) if (ch == '-') f = -1; for (; '0原创 2015-11-20 18:35:24 · 1075 阅读 · 0 评论 -
BZOJ 2631 Tree LCT
为了捡回记忆先写一道题。。 顺便把模板换成双旋的。以前写spaly掉RP掉光了。。 好慢啊。太懒了用link自作孽。。#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef unsigned int T;const T mod = 51061, N = 100005;int原创 2016-04-17 20:07:05 · 486 阅读 · 0 评论 -
BZOJ 2555 SubString 后缀自动机+LCT
在线向原串尾添加字符,询问字符串在原串中的出现次数。发现每次添加字符,Right集合就会沿Parent树大小+1,考虑LCT维护Parent树,以便区间修改。14.000s。。。。#include <cstdio>#include <cstring>const int N = 1200005, rt = 1;char s[3000010];struct LCT { int c[N][原创 2016-04-17 15:13:20 · 684 阅读 · 0 评论 -
BZOJ 4515|SDOI 2016|游戏|树链剖分
未完待续#include <cstdio>#include <algorithm>#include <cstring>typedef long long ll;using namespace std;const int N = 100005, M = N * 2, S = M * 2;int h[N], p[M], v[M], sz[N], fa[N], cnt, ts;int dep原创 2016-04-28 17:20:11 · 596 阅读 · 0 评论 -
BZOJ 4025|二分图|CDQ分治|并查集|LCT
一条边有存在的时间[start,end][start,end],问每个时刻该时图是不是二分图。是二分图就不存在奇环,考虑并查集维护最大生成树,是否是奇环也很好判断了,两点间距离就是dis[a]+dis[b]-2*dis[LCA],由于我们只关心奇偶性,因此把加减法换成xor也是可以的,然后就变成了dis[a]^dis[b]了,加上非树边就是环了。那么我们就考虑扫一遍时间,然后到了对应时间就加入边、删原创 2016-04-27 17:51:22 · 1165 阅读 · 0 评论 -
BZOJ 3626 LNOI 2014 LCA 树链剖分
q个询问统计编号[l,r]内的点与某个点z的LCA的深度和。任何点与z的LCA都在z到根的路径上。3626: [LNOI2014]LCADescription给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。 设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。 有q次询问,每次询问给出l r z,求sigm原创 2016-04-07 23:22:05 · 564 阅读 · 0 评论 -
某主席树的的问题
Description给定一棵 N 个节点的树, 每个点 i 有权值 a[i] , 1 <= a[i] <= M . 有 Q 个询问, 对于询问 x,y,k , 分别输出树上从 x 到 y 的路径中, 权值小于/等于/大于 k 的点的数目.Solution恩。。权值线段树?还要判断区间,好吧上主席树咯。如果不在树上,那么查询[l,r]关于小于k的数目。我们对区间建立线段树,可持久化权值(不知道能不能原创 2016-02-13 12:40:27 · 948 阅读 · 0 评论 -
BZOJ 3083 遥远的国度 树链剖分
奇怪了以前见过这题的。。 题意:换根+子树查+链改。 树链剖分裸题。 换根讨论情况。 怎么样就只能第二页了。。 markdown的代码插入语言不能写c++得写cpp?#include <cstdio>#include <algorithm>using namespace std;const int N = 100005, M = N * 3, inf = 0x7fffffff;in原创 2016-02-14 16:40:28 · 578 阅读 · 0 评论 -
BZOJ 2243 SDOI 2011 染色 树链剖分
线段树维护染色线段要注意左右关系。在提重链时左或右要注意颠倒过来,如果左或右没有特别去维护的话。#include #include #define FOR(i,j,k) for(i=j;i<=k;i++)#define rep(i,j,k) for(i=j;i<k;i++)using namespace std;typedef long long ll;ll原创 2015-11-19 20:25:53 · 535 阅读 · 0 评论 -
Link-Cut Tree(LCT) 模板总结 & 水题/模板题 动态树
1036: [ZJOI2008]树的统计CountTime Limit: 10 Sec Memory Limit: 162 MBSubmit: 9352 Solved: 3783[Submit][Status][Discuss]Description一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成一些操作: I. CH原创 2015-11-21 23:09:33 · 2818 阅读 · 0 评论 -
BZOJ 2819 Nim 树链剖分
在树上链改+链查Nim游戏是否必胜。如果是在链上的话直接xor一遍不等于0就好了。树上的话树链剖分一下就好。反正bzoj评测机是linux栈大233。不过既然是xor(好像没什么关系),不如树上链查转化成点到根的链查。用树状数组维护一下就好了。#include #include using namespace std;#define FOR(i,j,k原创 2015-11-22 10:27:04 · 547 阅读 · 0 评论 -
BZOJ 3306|树|树链剖分
和bzoj 3083比就是弱化版了。 样例都有点像? http://blog.youkuaiyun.com/huanghongxun/article/details/50663457#include <cstdio>#include <algorithm>using namespace std;const int N = 100005, M = N * 3, inf = 0x7fffffff;int原创 2016-02-14 18:46:51 · 630 阅读 · 0 评论