[cf1137F]Matches Are Not a Child's Pla】的更多相关文章

显然compare操作可以通过两次when操作实现,以下仅考虑前两种操作 为了方便,将优先级最高的节点作为根,显然根最后才会被删除 接下来,不断找到剩下的节点中(包括根)优先级最高的节点,将其到其所在树根的所有节点从下到上依次加入到序列的开头并删除,不难发现最终得到的序列即为燃烧的顺序 将每一次删除的链上的边称为实边,其余边称为虚边,实际上就构成了一个类似于LCT的结构 一次$v$的修改操作对该LCT的影响,简单分析后不难发现即为将$v$换为根 考虑节点$v$的答案,即分为两部分: 1.定义其中…
题目 CF1137F 很有意思的题目 做法 直接考虑带修改的做法,上一次最大值为u,这次修改v,则最大值为v了 我们发现:\(u-v\)这条链会留到最后,序列里的其他元素相对位置不变,这条链会\(u\longrightarrow v\)排到最后 序列会分成很多块,而这些块是以链为基础的 可以用\(LCT\)来做,具体说一下: 最大值放到根,修改v,就把\(v\)换成根,这个时候会拉一条链\(u-v\),此时\(u\)在\(v\)的右子树,\(x\)在单个块中的排序,就是\(LCT\)里单个\(s…
题面 我们定义一棵树的删除序列为:每一次将树中编号最小的叶子删掉,将该节点编号加入到当前序列的最末端,最后只剩下一个节点时将该节点的编号加入到结尾. 例如对于上图中的树,它的删除序列为:2 4 3 1 5 现在给出一棵\(n\)个节点的树,有\(m\)次操作: \(up\) \(v\):将\(v\)号节点的编号变为当前所有节点编号的\(\max + 1\) \(when\) \(v\):查询\(v\)在当前树的删除序列中是第几号元素 \(compare\) \(u\) \(v\):查询\(u\)…
孔爷的杂题系列:LCT清新题/ODT模板题 题目大意 定义一颗无根树的燃烧序列为:每次选取编号最小的叶子节点形成的序列. 要求支持操作:查询一个点$u$在燃烧序列中的排名:将一个点的编号变成最大 $n \le 200000$ 题目分析 首先初始的燃烧序列容易构造,那么考虑进行一次up操作对序列会产生什么影响. 这里对$3$进行一次$up$,得到下图. 容易发现,记上一个版本序列最后一个元素为$las$,进行$up\,\,\,x$相当于是把路径$(las,x)$的答案变成从$las$到$x$的等差…
我们定义一棵树的删除序列为:每一次将树中编号最小的叶子删掉,将该节点编号加入到当前序列的最末端,最后只剩下一个节点时将该节点的编号加入到结尾.现在给出一棵n个节点的树,有m次操作: up v:将v号节点的编号变为当前所有节点编号的\(max + 1\) when v:查询v在当前树的删除序列中是第几号元素 compare u v:查询u和v在当前树的删除序列中谁更靠前 题解 考虑每个点up后会带来什么影响. 可以发现新修改的这个点和修改这个点之前编号最大的点之间的这条链是最后被删掉的. 而且删除…
题目链接: [Codeforces1137F]Matches Are Not a Child's Play 题目大意: 我们定义一棵树的删除序列为:每一次将树中编号最小的叶子删掉,将该节点编号加入到当前序列的最末端,最后只剩下一个节点时将该节点的编号加入到结尾. 例如对于上图中的树,它的删除序列为:$2\ 4\ 3\ 1\ 5$ 现在给出一棵$n$个节点的树,有$m$次操作: $up\ v$:将$v$号节点的编号变为当前所有节点编号的$max+1$ $when\ v$:查询$v$在当前树的删除序…
Codeforces 很好,通过这题对LCT的理解又深了一层. 思路 (有人说这是套路题,然而我没有见过/kk) 首先发现,删点可以从根那里往下删,非常难受,所以把权值最大的点提为根. 然后考虑\(x\)什么时候会比\(y\)先被删掉:当且仅当\(x\)子树内权值最大值比\(y\)子树内权值最大值更大,而且\(x\)不是\(y\)的祖先. 所以给每一个点记另外一个权值:子树内最大值. 那么修改的时候会发生什么呢?要把另外一个点提为根,并且新根和旧根之间的那条链的子树最大值全都要改成原来的最大值.…
Codeforces 题面传送门 & 洛谷题面传送门 考虑将一个点 \(x\) 的编号变为当前所有点编号最大值 \(+1\) 会对每个点的删除时间产生怎么样的影响.由于编号最大的点肯定是最后一个被删除的,因此我们不妨令编号最大的点为根,那么可以发现,对于不在 \(x\) 到根这条路径上的点,它们删除的相对位置顺序是不会发生变化的,因为删除这样的点时,肯定它们的儿子已经被删除了,而它的父亲肯定没被删除,因此 \(x\) 到根节点这条路径上的点的删除顺序肯定不影响其它点的删除顺序,而由于此时 \(x…
部分摘抄于 FlashHu candy99 所以文章篇幅较长 请有足够的耐心(不是 其实不用学好splay再学LCT的-/kk (至少现在我平衡树靠fhq) 如果学splay的话- 也许我菜吧-LCT靠背板子 pushup靠理解-没救了/kk 简单讲讲LCT 至于树链剖分 建议在LCT之前学(? 反正我blog里也有 一[理论知识] -Link-Cut-Tree(简称LCT)是解决动态树类问题一种数据结构 -Preferred Child:重儿子,重儿子与父亲节点在同一棵Splay中,一个节点最…
CF1039D You Are Given a Tree 容易发现,当 \(k\) 不断增大时,答案不断减小,且 \(k\) 的答案不超过 \(\lfloor\frac {n}{k}\rfloor\) ,因此不同的答案个数是 \(\sqrt n\) 级别的,可以用一种类似整体二分的方式求解. 对于一个 \(k\) ,从叶子节点贪心向上匹配即可得到答案. 点击查看代码 #include<bits/stdc++.h> using namespace std; int n; int ver[2000…