LCT
Mys_C_K
人生有许多道:曾经踏足的是道,即将踏往的也是道,那什么才是道呢?唯有脚下走的才是道。一切精神或者物质都归于虚无,然后从混沌中衍生出三万道。在悲喜间涉足一条无数前人经历过,且将有无数后人奔赴的道,无论是否已经或者将要到达彼岸,然后便不再回头或是左顾右盼,即使有些道繁盛至极,夜灯如昼,无数人一浪又一浪的涌去,造就了世人皆知的辉煌;即使有些道草木凋敝,荒草丛生,只等勇敢的开拓者斩开荆棘,创造一片天地;这些都无所关,无所在意,彼岸何如、来日何方甚至过往旧事都化作一缕云烟,飘渺碧霄,我自撷高山之月色,独随足落处往行。
展开
-
[SDOI2008] bzoj 2049 Cave洞穴勘测 - LCT学习笔记
屯板子,LCT的话Menc讲的就不错 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define N 10010 using namespace std; int rev[N],fa[N],pf[N],ch[N][2]; inline int s...原创 2018-04-12 11:41:56 · 252 阅读 · 0 评论 -
友好国度 - 数论 - 容斥 - 并查集/LCT
题目大意: 给你一颗数,点有点权,问有多少路径,路径上点权的gcd是1. 题解: 考虑容斥,转为计数是g的倍数的路径。 把所有g的倍数的边(边权是两端点权的gcd)拿出来,每次合并两个集合前用两个集合的大小的乘积对ans[g]有贡献。 然后并查集即可 啥你问我为啥代码看起来像是个LCT? #include&lt;bits/stdc++.h&gt; #define rep(i,a,b) for(in...原创 2018-11-05 12:43:00 · 221 阅读 · 0 评论 -
Chef and Graph Queries - LCT - 主席树
题目大意:多次询问保留编号在[L,R]之间的边图中的连通块数量。1e5。 题解:固定右端点向左扫等价于求最大生成树,那么每条边出现的时间是一个区间,维护这个区间的右端点+1(也就是其被挤掉的时间)即可。 #include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;i++) #define Rep(i,v) rep(i,0...原创 2018-10-05 12:40:10 · 269 阅读 · 0 评论 -
巧克力之树 - 点分治 - 树状数组 - LCT
题目大意:给一颗边有权的树,求有多少路径满足边权最大值减去最小值不超过k,1e5。 题解:用BIT维护点分治过程中的二维数点或者直接LCT即可。 点分治 #include&amp;amp;lt;iostream&amp;amp;gt; #include&amp;amp;lt;cstring&amp;amp;gt; #include&amp;amp;lt;cstdio&amp;amp;gt; #include原创 2018-09-02 14:44:27 · 239 阅读 · 0 评论 -
[SDOI2016]bzoj 4817 树点涂色 - LCT - 线段树
和之前写的LCT维护子树真是小巫见大巫了…… #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<utility> #define gc getchar() #define debug(x) cerr<<#x...原创 2018-08-02 15:53:30 · 161 阅读 · 0 评论 -
重要!!!LCT的cut特判应该判定sz[x]==2&&ch[x][1]==y!!!
重要!!!LCT的cut特判应该判定sz[x]==2&&ch[x][1]==y!!! 重要!!!LCT的cut特判应该判定sz[x]==2&&ch[x][1]==y!!! 重要!!!LCT的cut特判应该判定sz[x]==2&&ch[x][1]==y!!! 重要!!!LCT的cut特判应该判定sz[x]==2&&ch[x][1]...原创 2018-08-10 19:13:21 · 204 阅读 · 0 评论 -
树上路径 - LCT
给定一棵 n 个点的树,要求支持一下两种操作: 1 u v a b:在删去原有边 (u,v),加入新边 (a,b),保证操作后整张图还是一棵树。 2 u v:求从 u 到 v 经过每个点不超过 2 次的不同路径条数(初始在 u 及最后到达 v 均计算入经过次数)。两个路径被认为是不同的,当且仅当其经过点的序列不同。 真点好题 如果是矩阵的话要注意矩乘没有交换律,所以要维护左到右和右到左。 ...原创 2018-08-10 17:00:10 · 455 阅读 · 0 评论 -
bzoj 3091 城市旅行 - LCT
暴力碾标算系列 写一个时间复杂度基于直径长度的算法可以获得一百分的好成绩。 暴力(后面有std代码): #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define N 50010 #define lint long long #define ...原创 2018-08-10 16:56:44 · 165 阅读 · 0 评论 -
UOJ #207 共价大爷游长沙 - LCT
(为啥我傻了吧唧的拆了点) 集合中的每一对点随即一个权值,然后再树上两个点分别异或这个权值,最后每次询问统计其中一边的子树的异或和是不是所有点对的权值的异或和即可。 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<cli...原创 2018-07-21 09:32:02 · 223 阅读 · 0 评论 -
最小修改距离生成树 - LCT(类似最小方差生成树)
题目大意 求生成树,使得:∑e∈ET|w(e)−ez|∑e∈ET|w(e)−ez|\sum_{e\in E_T}|w(e)-e_z|最小。其中ezeze_z表示边权的中位数 题解 和最小方差生成树没有任何本质区别。 首先来看最小方差生成树,方差可以写成平方和的平均值减去和的平方,因此可以快速计算一些数字的方差; 考虑,由于所有数字的和是O(nw)O(nw)O(nw)的,所以平均值也是这个...原创 2018-06-25 22:05:52 · 669 阅读 · 0 评论 -
bzoj 2816 [ZJOI2012]网络 - LCT
持续屯板子…… #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define N 200010 using namespace std; int sz[N],fa[N],pf[N],ch[N][2],rev[N]; inline int gw(...原创 2018-04-12 11:44:25 · 258 阅读 · 0 评论 -
[Hnoi2010] bzoj 2002 Bounce 弹飞绵羊 - LCT
继续屯板子 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define N 200010 using namespace std; int sz[N],fa[N],pf[N],ch[N][2],rev[N]; inline int gw(in...原创 2018-04-12 11:43:11 · 262 阅读 · 0 评论 -
bipartite - LCT
题目大意:加边删边判定图是否是二分图。n<=1e5. 题解:还是维护最大删除时间生成树,当加入一条边形成奇环的时候,将换上删除时间最小的边断开,并截止这个时间之前都不会是二分图。 #include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;i++) #define mp make_pair #define fir ...原创 2019-03-19 16:07:14 · 247 阅读 · 0 评论