
树链剖分
A1847225889
在一次次翻车中吸取教训……
展开
-
LOJ2434. 「ZJOI2018」历史
题目正解比第一题清真多了……但还是很难想……首先读完题目之后是个人都会想到LCTLCTLCT。题目的那个过程就是模拟access的过程。然而如果仅仅从这个模型上考虑不会有什么思路。把每个点分开考虑,分析一个国家xxx会怎样被其它国家(记为yyy)打败:yyy在xxx的子树内。此时yyy一定会占领xxx的全部领土。将这个贡献记在yyy上。yyy在xxx的祖先,或者是祖先的另一棵子树内。那么此时yyy会占领xxx在lcalcalca及以上的领土。将这个贡献记在lcalcalca上。设siz原创 2020-07-08 17:17:04 · 761 阅读 · 0 评论 -
6729. 【2020.06.16省选模拟】T3 树论
题目正解一个节点的SGSGSG值是它子树中的点到它的最大距离(即最大深度)。对于所有的根,可以发现一个节点的子树内最大深度至多有两种。具体证明可以考虑两种最大深度从两个不同的方向伸出,父亲边至多会占据一个方向。先将ilnil的做法:对于每个节点记下这两个最大深度以及它们的方向。以111为根建树。假设当前的根为rtrtrt,可以发现只有111到rtrtrt路径上的点的最大深度方向不是向下。树链剖分,对于重链上的点,处理出不在重儿子方向上的最大深度;对于轻链,找到不是往rtrtrt方向的最大深度原创 2020-06-19 08:06:12 · 319 阅读 · 0 评论 -
6438. 【GDOI2020模拟01.16】树上的鼠
题目由于时间过于久远,而且题面本身也很清晰,所以就懒得另外叙述题目大意了(还有思考历程)。正解先考虑一条链的情况(长度为奇数,这里的长度是指点的数量):如果根在中点,先手无论移到哪里,后手都可以移到它的对称点去。此时先手必败;如果根不在中点,先手只要一开始移到中点,先手就赢了。若长度为偶数,就将中间的两个点都看成中点。先手第一步先移到离根比较远的那个中点上,以后就用一样的策略,每次...原创 2020-01-28 17:32:44 · 290 阅读 · 0 评论 -
树链剖分
树链剖分看起来是个很高级的算法。在介绍这个算法之前,要感谢某位大神cgh,是他教了我树链剖分。简介什么样的题目要用到树链剖分基本思想详细讲解一些概念1重儿子和轻儿子2重链一些性质重点部分实现细节预处理在线操作时间复杂度OnQlgnOnQlgn例题一P3379 模板最近公共祖先LCA题目描述输入格式输出格式输入输出样例输入样例1输出样例原创 2017-10-08 17:28:22 · 838 阅读 · 0 评论 -
[JZOJ5977] 【清华2019冬令营模拟12.15】堆
题目其中n,q≤500000n,q\leq 500000n,q≤500000题目大意让你维护一个堆。支持一下操作:在某个点的下面加上另一个点,然后进行上浮操作。询问某一点的权值。思考历程实际上,这题我还没有AC。不过思想是差不多了。一眼看这题,诶,不就是那道中学生数据结构题吗?直接树链剖分,然后splay一波搞定!思想还是很简单的!但是感觉有点长……正解上面的这...原创 2018-12-20 18:55:03 · 349 阅读 · 0 评论 -
[JZOJ4639] 【NOIP2016提高组A组7.16】Angel Beats!
题目描述题目大意给你一棵树,每次询问两个点,求出这两个点的子树的重心到其中每个点的距离和。重心的定义是到其中每个点距离和最小的点(不一定在两棵子树内)思考历程想想以前我是怎么求重心的呢……先预处理出sizsizsiz,然后重心有个强大的性质:将重心看做根节点,则其中的每课子树的大小都小于等于它的一半然后我就乱搞出了一个方法。可是我最终发现了一个问题:这不是传统的一棵树,这...原创 2019-05-08 19:01:46 · 465 阅读 · 0 评论 -
[JZOJ1904] 【2010集训队出题】拯救Protoss的故乡
题目题目大意给你一个树形的网络,每条边从父亲流向儿子。根节点为原点,叶子节点流向汇点,容量为无穷大。可以给一些边扩大容量,最多总共扩大mmm容量。每条边的容量有上限。求扩大容量后最大的最大流。思考历程隐隐约约地猜到正解跟树链剖分有什么关系,可是没有打,也没有时间打。只能暴力DP来水分。设hi,jh_{i,j}hi,j为iii的父亲到iii的最大流,扩大了jjj次容量。gi,jg...原创 2019-08-09 21:04:52 · 307 阅读 · 0 评论 -
[JZOJ6359] 【NOIP2019模拟2019.9.15】小ω的树
题目题目大意给你一棵树,带点权和边权。要你选择一个联通子图,使得点权和乘最小边权最大。支持修改点权操作。思考历程显然,最先想到的当然是重构树了……重构树就是在做最大生成树的时候,当两个联通块相连时,新增一个点,将两个联通块的根节点连上去。这个新建的点上记录这条边的边权,那么以它为子树的答案就是子树的点权和乘上自己表示的这条边的边权。然后题目就变成了一个似乎很经典的问题:给你ai...原创 2019-09-17 19:15:30 · 518 阅读 · 0 评论