随笔分类 -  数据结构->动态树Link-Cut-Tree

摘要:题解 看了一遍题解(以及代码)但是没写代码…… 后来做梦的时候忽然梦到了这道题……意识到我需要补一下…… 这道题就是,对于每种颜色,把没有染成这种颜色的点标成黑点,然后计算每个联通块的平方 然后每个点维护,虚儿子黑点的siz,虚儿子的siz的平方,还有splay上的siz和 为了保证最高点是白点,我 阅读全文
posted @ 2019-07-07 19:53 sigongzi 阅读(616) 评论(1) 推荐(0)
摘要:题解 可以发现每次修改的是这个点往上一条连续的链,如果我要把1改成0,需要满足这一段往上的一部分都有两个1 如果我要把0改成1,需要满足这一段往上的部分有两个0 对于每个点记录1的个数,发现我们只会把一棵树的2全部改成1或者把1全部改成2,这样加标记的时候可以同时维护是否全1或者是否全2,用lct维 阅读全文
posted @ 2019-03-07 18:48 sigongzi 阅读(244) 评论(0) 推荐(0)
摘要:题解 和BZOJ4025挺像的 就是维护边权是时间的最大生成树 删边直接删 两点未联通时直接相连,两点联通则找两点间边权小的一条边删除即可 代码 cpp include define fi first define se second define pii pair define pdi pair 阅读全文
posted @ 2018-12-12 09:58 sigongzi 阅读(335) 评论(0) 推荐(0)
摘要:题解 lct维护一个结束时间作为边权的最大生成树,每次出现奇环就找其中权值最小的那条边,删掉的同时还要把它标记上,直到这条边消失 如果有标记则输出No 边权通过建立虚点来维护 代码 cpp include define fi first define se second define pii pai 阅读全文
posted @ 2018-12-12 09:31 sigongzi 阅读(347) 评论(0) 推荐(0)
摘要:题解 我现在真是太特么老年了 一写数据结构就颓废,难受 这题就是用lct维护子树 ???lct怎么维护子树 这样想,我们给每个点记录虚边所在的子树大小,只发生在Access和link的时候 这样的话我们在这两个操作的时候顺带维护一下就好了 Access的时候加上新的虚儿子,减掉变成实边的那个儿子 l 阅读全文
posted @ 2018-12-11 20:31 sigongzi 阅读(249) 评论(0) 推荐(0)
摘要:题解 写数据结构的时候我代码就会变得非常非常长 一看别人1.5K 2.3K 我6.3K…… orzzzzz 我们很容易想到离线倒着插入,然而,有个小锅叫如果size相同保持原来的重儿子不变 我们需要写个线段树,遇到两个size相同的儿子时看两个儿子下一次插入是什么时候,取下一次插入时间较大的儿子,如 阅读全文
posted @ 2018-08-29 10:15 sigongzi 阅读(233) 评论(0) 推荐(0)
摘要:https://www.hackerrank.com/challenges/how many substrings/problem 题解 似乎是被毒瘤澜澜放弃做T3的一道题(因为ASDFZ有很多人做过,当然,他换了一道更毒瘤的……) 仓鼠在最后一天的时候提了一嘴然后我发现依旧菜菜的不会……(因为太菜 阅读全文
posted @ 2018-07-10 21:10 sigongzi 阅读(542) 评论(1) 推荐(0)
摘要:题解 我们发现,题目告诉我们这个东西就是一个lct 首先,如果只有3,问题就非常简单了,我们算出所有a的总和,所有b的总和就好了 要是1和2也是多项式就好了……其实可以!也就是下面泰勒展开的用处,我们可以用一个多项式取逼近这个函数,而且,多项式次数越高越准确,我们大概到13次多项式就好了 如何创造出 阅读全文
posted @ 2018-05-23 15:38 sigongzi 阅读(178) 评论(0) 推荐(1)
摘要:数据结构使我头秃 动态树,又名Link Cut Tree,简称LCT 我们要维护一个森林,这个森林里面有很多有根树 然后说一下定义,定义就是实边和虚边了 一个点和它的儿子中只能有一条实边,这些实边串起来后用splay维护,头结点的父亲就是路径中最浅节点的父亲 然而怎么判断Splay的根呢,根的父亲还 阅读全文
posted @ 2018-05-18 21:44 sigongzi 阅读(212) 评论(0) 推荐(0)