LCT
Master.Yi
学习他人,提升自己;
提升自己,帮助他人。
展开
-
Codeforces482E - ELCA【LCT维护两两LCA权值之和】
题目描述:洛谷链接题目分析:首先把答案分为两部分,一部分是LCA在虚儿子内部的,记为 xans,一部分是LCA在prefer链上的,合计为ans贡献在splay树上分步统计,实际上存的都是受x在splay中的子树中的节点管辖的贡献ans[x]=ans[ch[x][0]]+ans[ch[x][1]]+xans[x]+虚子树中LCA为x的:a[x]∗(xsz[x]∗xsz[x]−sz2[x])(xsz[x]:x的虚子树大小+1,sz2[x]:x的虚子树大小平方之和)+右子树和虚子树LCA为x:a[x原创 2020-06-08 19:34:52 · 278 阅读 · 0 评论 -
20200519 hz【对称中心,前缀和优化DP,LCT最小生成树(边权k±x)】
T1:小B的棋盘K个棋子可以不用完,对称指旋转180°后完全重合。而前k+1k+1k+1与后k+1k+1k+1个点中一定有一对点匹配,这样就可以确定对称中心,枚举后check即可,O(k2n)O(k^2n)O(k2n)Code:#include<bits/stdc++.h>#define maxn 100005using namespace std;int n,K;struct node{ int x,y; bool operator < (const node &原创 2020-05-19 18:25:00 · 233 阅读 · 0 评论 -
Codeforces1172E Nauuo and ODT【LCT维护树上连通块】
题目描述:nnn个点的树,每个点有颜色cic_ici,带单点修改,每次输出所有链颜色数的和((u,v)(u,v)(u,v)和(v,u)(v,u)(v,u)当u≠vu\neq vu=v时算作两条链)n,m≤400000,ci≤nn,m\le400000,c_i\le nn,m≤400000,ci≤n题目分析:对每种颜色分开考虑,答案要加上n2−n^2-n2−不经过这个颜色的链条数令当前颜色为白色,非当前颜色为黑色,那么就是对每种颜色求黑色连通块大小的平方和。当一个点颜色改变时会有O(度数)原创 2020-05-17 09:53:54 · 451 阅读 · 0 评论 -
LOJ#6038. 「雅礼集训 2017 Day5」远行【LCT+并查集 动态维护直径】
题目描述:Miranda 生活的城市有 NNN 个小镇,一开始小镇间没有任何道路连接。随着经济发现,小镇之间陆续建起了一些双向的道路。但是由于经济不太发达,在建设过程中,会保证对于任意两个小镇,最多有一条路径能互相到达。有的时候 Miranda 会从某个小镇开始进行徒步旅行,每次出发前,她都想选择一个她能到达的最远的小镇作为终点,并且她在行走过程中是不会走回头路的,为了估算这次旅行的时间,她会...原创 2020-05-03 16:21:48 · 259 阅读 · 0 评论 -
BZOJ4530: [Bjoi2014]大融合【LCT求子树大小】
题意:动态加边,询问某条边两边连通块大小。在线LCT做法:多记录一个g[x]g[x]g[x]表示虚儿子的大小之和,access的时候一加一减维护一下。离线线段树合并做法:先建出最终的森林,求出dfs序,求某一部分的大小就在连通块对应的线段树中查询dfs序上的一段区间。离线链加做法:先建出最终的森林,加的边一定是父子边,并查集维护每个点向上能连通的最远的点,加边相当于将儿子的size加到父亲到...原创 2020-03-26 23:58:16 · 202 阅读 · 0 评论 -
极差最小生成树(苗条的生成树,Urban Geography)【LCT】
问题描述:vjudge题目链接:Urban Geography给你一个n个点m条带权边的图,求一棵生成树,使得它的最大边减去最小边最小,输出任意一组符合条件的所选边的编号。题目分析:看了看我初一写的博客:苗条的生成树不忍直视QWQ这道题是有nlogn做法的,LCT或者分治回溯+并查集,这里主要说前一种。最小极差很容易想到最小生成树,但是最小边不好确定,枚举的话复杂度是n2logn的。...原创 2019-07-06 17:42:20 · 504 阅读 · 0 评论 -
BZOJ 2759: 一个动态树好题 【LCT(节点维护线性方程)】
题目描述:题目传送门有N个未知数x[1…n]和N个等式组成的同余方程组:x[i]=k[i]∗x[p[i]]+b[i]mod10007x[i]=k[i]*x[p[i]]+b[i] mod 10007x[i]=k[i]∗x[p[i]]+b[i]mod10007其中,k[i],b[i],x[i]∈[0,10007)∩Z你要应付Q个事务,每个是两种情况之一:一.询问当前x[a]的解:A a无...原创 2019-03-22 17:37:50 · 175 阅读 · 0 评论 -
BZOJ 1180: [CROATIAN2009]OTOCI 【LCT】
LCT板题然而看了看洛谷rank1的代码果然是离线树剖骚操作。。我就只能打打无脑LCT。。Code:#include<cstdio>#include<cctype>#include<cstring>#include<algorithm>#define maxn 30005#define LL long longusing name...原创 2019-03-22 11:28:05 · 130 阅读 · 0 评论 -
BZOJ 3514: Codechef MARCH14 GERALD07加强版 【LCT+主席树求图的连通块个数】
题目描述:题目传送门N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数。n,m<=200000题目分析:图的连通块个数肿么求?按编号顺序依次加边。如果边iii加入的时候形成了环,那么把环中最先加入的边jjj找到,令pre[i]=jpre[i]=jpre[i]=j,并把jjj断掉。如果没有成环,那么pre[i]=0pre[i]=0pre[i]=0区间...原创 2019-03-22 08:18:05 · 474 阅读 · 0 评论 -
BZOJ 2631: tree 【LCT维护链上加乘运算】
板题,维护add,mul,siz,val,sum。下传的时候优先乘法。Code:#include<cstdio>#include<cctype>#include<cstring>#include<map>#include<algorithm>#define maxn 100005using namespace std;...原创 2019-03-19 21:01:48 · 126 阅读 · 0 评论 -
BZOJ 2594: [Wc2006]水管局长数据加强版 【LCT维护最小生成树】
题目分析:要明确一个事实:并查集删边是不存在的,不可能写的所以离线之后把询问反过来做,变成加边 (这也是个老套路了)对于删掉的边,用map存下它原来的编号加回去的时候,询问(x,y)路径上的最大边权,看能否替换掉它。但是众所周知LCT似乎只能维护点权。那么就把边看作点,向两个端点连边,自身的点权就是边权。由于要断边,所以要保存点权最大的点的编号,而不是直接保存最大值询问就直接找到点...原创 2019-03-19 20:02:38 · 164 阅读 · 0 评论 -
BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 【LCT维护深度】
LCT板题。然而我还是WA到自闭。对着大数据调。。。(最后还是自己造小数据)结果发现当LCT需要维护深度的时候不能随便beroot!!一旦beroot之后深度关系就会变!!所以把link,cut操作统统改掉。。变成直接断边。Code(完整模板(很多函数都没用)):#include<cstdio>#include<cctype>#include<cst...原创 2019-03-19 16:25:30 · 185 阅读 · 0 评论