Codeforces 482E ELCA (LCT)】的更多相关文章

题目链接 http://codeforces.com/contest/482/problem/E 题解 T2智商题T3大LCT题,我一个也不会= = CF的标算好像是分块?反正现在LCT都普及了就用LCT好了. 首先算期望推个式子,易得答案为\(\sum_u a[u](sz[u]^2-\sum_{v\in son[u]} sz[v]^2)\) (\(sz\)为子树大小),令求和的那个东西等于\(f[u]\) 并且如果往一个\(u\)里新添一个儿子\(v\),增添后的子树大小是\(sz[v]\),…
1. CF 438D The Child and Sequence 大意: n元素序列, m个操作: 1,询问区间和. 2,区间对m取模. 3,单点修改 维护最大值, 取模时暴力对所有>m的数取模. 因为取模后至少减半, 复杂度$O(nlognlogC)$ 2. CF 431E Chemistry Experiment 大意: n个试管, 第$i$个试管有$a_i$单位水银, m个操作: 1, 修改$a_x$改为$v$. 2, 将$v$单位水倒入试管, 求一种方案使得有水的试管水银与水总量的最大…
Codeforces ZROI那题是这题删掉修改的弱化版--ZROI还我培训费/px 思路 按照套路,我们考虑每种颜色的贡献,然后发现不包含某种颜色的路径条数更容易数,就是删掉该颜色的点后每个连通块大小的平方和. 由于每种颜色影响到的点之和是\(O(n)\)的,所以我们每种颜色分开考虑,就变成了只有两种颜色的情况. 把这种颜色视为白色,其他颜色视为黑色,那么每个黑色点往父亲连边(1往一个虚拟点连边),就可以在白点处统计贡献. 所以每次改变颜色就只是一个link或cut,用LCT维护. 代码 #i…
Codeforces 很好,通过这题对LCT的理解又深了一层. 思路 (有人说这是套路题,然而我没有见过/kk) 首先发现,删点可以从根那里往下删,非常难受,所以把权值最大的点提为根. 然后考虑\(x\)什么时候会比\(y\)先被删掉:当且仅当\(x\)子树内权值最大值比\(y\)子树内权值最大值更大,而且\(x\)不是\(y\)的祖先. 所以给每一个点记另外一个权值:子树内最大值. 那么修改的时候会发生什么呢?要把另外一个点提为根,并且新根和旧根之间的那条链的子树最大值全都要改成原来的最大值.…
Codeforces 题面传送门 & 洛谷题面传送门 考虑将一个点 \(x\) 的编号变为当前所有点编号最大值 \(+1\) 会对每个点的删除时间产生怎么样的影响.由于编号最大的点肯定是最后一个被删除的,因此我们不妨令编号最大的点为根,那么可以发现,对于不在 \(x\) 到根这条路径上的点,它们删除的相对位置顺序是不会发生变化的,因为删除这样的点时,肯定它们的儿子已经被删除了,而它的父亲肯定没被删除,因此 \(x\) 到根节点这条路径上的点的删除顺序肯定不影响其它点的删除顺序,而由于此时 \(x…
Codeforces 题面传送门 & 洛谷题面传送门 讲个笑话,这题是 2020.10.13 dxm 讲题时的一道例题,而我刚好在一年后的今天,也就是 2021.10.13 学 LCT 时做到了这道题...... 首先考虑一个区间的导出子图是一棵树的充要条件.显然这些点组成的边集不能有环,其次这些点组成的导出子图必须满足 \(|V|-|E|=1\),而对于一个不存在环的图必然有 \(|V|-|E|\ge 1\),因此这两个条件加在一起就组成了一个区间符合条件的充要条件. 考虑如何维护之,注意到当…
Nasta Rabbara 题意:简单来说就是, 现在有 n个点, m条边, 每次询问一个区间[ l ,  r ], 将这个区间的所有边都连上, 如果现在的图中有奇数环, 就输出 “Impossible”, 否者就输出 ”possible“. 题解: 步骤1:我们先找出每个最小的 [ l,  r]  当这个区间的边都出现后, 就会出现一个奇数环. 步骤2:问题就变成了对于一次询问 [ L, R ]  是否存在上面的一个区间 被完全覆盖. 对于步骤1来说:需要加边和删边, 我们用 lct 维护.…
题解请看 Felix-Lee的CSDN博客 写的很好,不过最后不用判断最小值是不是1,因为[i,i]只有一个点,一定满足条件,最小值一定是1. CODE 写完就A,刺激. #include <bits/stdc++.h> using namespace std; typedef long long LL; #define X first #define Y second inline void read(int &x) { int flag = 1; char ch; while(!i…
题意 题解 50pts 由于这题 \(2s\),所以可以信仰一波,暴力修改.查询. 暴力修改的复杂度是 \(O(n)\),暴力查询的复杂度是 \(O(n^2)\). 但不难发现可以通过记录子树大小来优化查询.具体地就是我们发现可以从每个点出发走到根,每经过一个点就计算一下起点与多少个点的 \(\text{LCA}\) 是这个点.预处理一下以每个点为根的子树大小即可. 优化一下,我们发现直接 \(\text{dfs}\) 一遍整颗树就能统计所有答案.对于每个点 \(u\) 枚举一条儿子边,设该儿子…
Description 给出一棵n个节点的树,每个点有一个1~n的颜色 有m次操作,每次操作修改一个点的颜色 需要在每次操作后回答树上\(n^2\)条路径每条路径经过的颜色种类数和. \(n,m<=400000\) Solution 挺有意思的一个套路 首先我们单独计算每种颜色的贡献,对于每种颜色的点集分开考虑,我们需要计算至少经过了其中一个点的路径条数. 正难则反,考虑计算一个点都没经过的路径条数,那就是将点集删去后剩余连通块的大小平方和. 考虑这样一个模型 对于原本每种颜色有一个黑白两色的树…