一些瓜皮

放几个比较优(she)秀(pi)的\(LCT\)题。
老惯例,每一题代码因为一些未知原因消失了(如果要的话私我好了,虽然会咕咕咕)。
嘴巴\(AC\)真香!

[SP16580] QTREE7

对黑色、白色各开一棵有根\(LCT\)。
若\(x\)点加入颜色\(c\)集合,则在\(c\)的那颗\(LCT\)上连接\((x,fa_x)\),在另一棵上断掉父亲边。
查询时,首先判断根结点是否在当前颜色集合内。
如果在的话直接查整棵\(LCT\)。
否则走向右儿子,查询对应子树。
什么子树最大值啥的维护一下子树信息,拿\(multiset\)搞搞就行了。

[BZOJ2959] 长跑

动态联通图?这种东西估计只有鸽子他们才会吧......
注意到边是任意定向,所以一个环等价于都能走,直接缩起来即可。
所以如果当前连边两点已经在一个联通块了,那么直接暴力缩点。

[LOJ6041] 事情的相似度

建\(SAM\),那么两个结点的\(LCA\)就是它们的最大\(lcp\)。
离线,依次加入左端点,那么它沿着\(SAM\)的\(fail\)树一路往上爬,遇到的所有右端点都有贡献。
这是\(LCT\)的经典应用,就是一个\(Access\)。
并且显然只有最靠左的右端点有用,所以\(LCT\)维护最小右端点即可。
最后得到了若干二元组,扫描线一遍完事。

[ZJOI2018] 历史

显然每个结点的答案只与/子树内战争个数\(sum\)/和//最大战争个数的子树/的战争个数\(mx\)//有关。
当\(mx > \lceil \frac{sum}{2} \rceil\)时,\(Ans = 2(sum-mx)\),否则\(Ans = sum-1\)。
一个直观想法就出来了,直接有根\(LCT\)维护子树最大值,每次\(Access\)更新答案。
吉老师:\(naive\)。
问题在于:每次\(PushUp\)需要知道子树大小,而知道子树大小需要\(Splay\)当前结点。
所以这题就变仙了。
直接类似\(LCT\)维护状态,对于满足\(mx> \lceil \frac{sum}{2} \rceil\)的儿子用重链连接,否则用轻链连接。
可以发现一条重要性质:爆跳父亲,重链个数不会超过\(log_2(deep)\)。
然后真相大白,全部暴力维护即可。

[BZOJ2888] 资源运输

维护重心是一个老的不行的套路了,使用启发式合并可以秒杀。
问题在于维护所有点到重心的距离和。
点分治?做梦吧你!
可以发现,对每一个点维护联通块内的点到其的距离和相当浪费。
其实我们只需要知道重心的该信息。
所以就只在重心维护这个信息,考虑重心移动时的转移,发现只需要再维护子树和就行了。
由于我们需要支持\(Link\)操作的同时维护子树信息,所以依旧需要维护换根反转标记。

[BZOJ3779] 重组病毒

显然染色操作就相当于\(Access\),然后考虑贡献。
我们把减少量差分处理,那么对于重链链顶的子树,答案全部减少了\(1\)。
同时对于原来的重链儿子,其颜色会相对来说增加\(1\)。
把原树给剖一下然后线段树区间修改直接维护即可。
现在有了换根操作,其实是一样的。
可以发现,换根后进行一次染色,等价于先染色然后换根(反正那条链的颜色只有一个)。
所以就当作什么都没发生,直接换根。
由于现在根可以在查询点的子树内,所以这种情况加贡献也要特殊处理,稍微弄一下就行了。

[BZOJ4573] 大森林

\(n\)棵\(LCT\)是不可能的,这辈子都不可能的。
由于询问保证查询点一定在树上,所以把那些多余的点全部建出来是没有影响的。
所以唯一难办的操作就是更换生长结点了,此时需要集体换父亲操作。
不难想到,对于第\(i\)个生长结点,建立一个虚拟结点\(p_i\),把长在它下面的结点全部连在\(p_i\)上。
现在可以解决集体换父亲了,但如何放置这些虚拟结点使其满足对应包含关系?
我们使用一种近乎疯狂的方式解决这个问题。
离线。
在算法开始前,我们把\(p_i\)连接到\(p_{i-1}\)下面。
那么当碰到更换生长结点操作\(i\)的左端点时,直接把\(p_i\)连接到对应位置。
在该操作结束后,把\(p_i\)重新连接回\(p_{i-1}\)下面。
包含关系显然时刻都是对的。
然后查询答案涉及求\(LCA\)(可能为虚点),很棒的是\(LCT\)完美兹瓷该操作。

一些$LCT$的瓜皮题目的更多相关文章

  1. 谈谈一些有趣的CSS题目(十二)-- 你该知道的字体 font-family

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

  2. 谈谈一些有趣的CSS题目(十一)-- reset.css 知多少?

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

  3. 谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  4. 一道返回num值的小题目

    题目描述: 实现fizzBuzz函数,参数num与返回值的关系如下: .如果num能同时被3和5整除,返回字符串fizzbuzz .如果num能被3整除,返回字符串fizz .如果num能被5整除,返 ...

  5. 谈谈一些有趣的CSS题目(一)-- 左边竖条的实现方法

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  6. 谈谈一些有趣的CSS题目(二)-- 从条纹边框的实现谈盒子模型

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  7. 谈谈一些有趣的CSS题目(四)-- 从倒影说起,谈谈 CSS 继承 inherit

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  8. 谈谈一些有趣的CSS题目(五)-- 单行居中,两行居左,超过两行省略

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  9. 谈谈一些有趣的CSS题目(六)-- 全兼容的多列均匀布局问题

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

随机推荐

  1. 使用云负载时将http的请求转发至https时报错:“ERR_TOO_MANY_REDIRECTS”!

    问题描述: 新业务正式环境部署,使用云负载(有http监听也有https监听)在我向我的 Web 服务器添加重定向逻辑后,我的网站停止工作,并且我收到错误 ERR_TOO_MANY_REDIRECTS ...

  2. [学习笔记]SiftGPU入门

    当有读者看到我这篇SiftGPU入门的学习笔记时,相信你已经读过了高博那篇<SLAM拾萃:SiftGPU>,那篇文章写于16年,已经过去两年的时间.在我尝试配置SiftGPU的环境时,遇到 ...

  3. linux go环境安装

    方法一 这次将源码包安装的目录是是/root下. 1.官网下载源码包. 官网链接:https://golang.org/dl/   wget https://storage.googleapis.co ...

  4. 笔试题——C++后序字符比较

    题目:从两个数组的最后一个元素开始比较,输出数组中不同元素的个数.当一个数组的所有元素比较完成后,结束比较.a数组长度5,b数组长度3,a[ 4 ]和b[ 2 ]比较. 例: 输入: 77 21 1 ...

  5. Kubernetes探索学习004--深入Kubernetes的Pod

    深入研究学习Pod 首先需要认识到Pod才是Kubernetes项目中最小的编排单位原子单位,凡是涉及到调度,网络,存储层面的,基本上都是Pod级别的!官方是用这样的语言来描述的: A Pod is ...

  6. [java] jar file

    查看 .jar 内的文件 jar tf jarfile.jar maven 项目中, java 读取目标文件 运行 mvn package 打包项目是, src/main/resources 下的文件 ...

  7. 第10讲:利用SQL语言实现关系代数操作

    一.实现并.交.差运算 1. 基本语法形式:子查询 [union [all] | intersect [all] | except [all] 子查询] ①意义:将关系代数中的∪.∩.- 分别用uni ...

  8. JavaWeb项目通过调用cmd实现备份数据库的功能

    1.别急着上车,先测试一下能否成功调用cmd,可以尝试通过cmd命令打开计算器,代码如下:     2.能成功打开计算器后,证明调用cmd的方法是没错的,现在把cmd命令字符串改成我们备份数据库的 命 ...

  9. 渐入OO课的深处,探索多线程的秘密——OO第二次博客总结

    一次又一次的挑战,一次又一次全新的知识,我来到了多线程的面前 第五次作业 1.度量分析 >第五次作业由于很大程度上调用的是前两次电梯的一些代码,所以存在的问题与前几次也十分相似.同时由于第一次使 ...

  10. JAVA第二次试验

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计 班级:1352  姓名:潘俊洋  学号:20135230 成绩:             指导教师:娄嘉鹏 ...