学习记录
顾客言
这个作者很懒,什么都没留下…
展开
-
P3384 【模板】重链剖分/树链剖分
其实就是运用了两边dfs维护dfs序之类的信息,然后线段树区间修改,区间查询之类的操作。原创 2024-03-07 16:45:16 · 172 阅读 · 0 评论 -
启发式合并
启发式合并时间复杂度的简要证明:可以发现每次将小的集合合并到大的集合中时,小的那个集合的大小至少会变为原来的两倍,所以每个元素在集合之间的转移次数是 logn 级别的,同时利用swap交换近乎为O(1)的。原创 2023-12-18 21:13:42 · 345 阅读 · 0 评论 -
正反哈希两种版子
【代码】正反哈希两种版子。原创 2023-12-18 10:24:55 · 88 阅读 · 0 评论 -
字符串哈希(线段树维护)
这一种直接暴力维护的正反哈希,一个左高右低,一个右高左低,相比较于第一种做法多了一个快速幂的log( 注意取mod,不然会wa)我们这里是左高右低,故是hash[ l ]=hash[ l ]*p[ r.len ]+hash[ r ];这一种做法就和正常的字符串哈希基本思想一样,都是h[r]=h[l-1]*p[r-l+1];且注意要query要先递归右子树,以便于先维护出右部分的len。原创 2023-08-22 09:32:02 · 396 阅读 · 0 评论 -
P4178 Tree (点分治)
一:我们考虑树上两点之间的路径有什么情况1:经过根节点(即在根节点的两端)2:不经过根节点(完全在一颗子树的一侧)二:我们考虑这两种路径是否可以归为一类1:对于第一种的情况两点间路径长度dis( u , v ) 可以看为dis ( u , root ) + dis ( root , v )2:而对于第二种情况我们可以找到u , v 路径所在的子树,将根节点变为子树的根节点,然后就变为了第一种情况3:总之,所以我们可以不断的递归根节点将所有情况转化为第一种情况。原创 2023-08-12 14:42:48 · 171 阅读 · 0 评论