随笔分类 -  树链剖分

摘要:处理了一年的边界问题 #include <bits/stdc++.h> using namespace std; const int N = 2e5 + 10; #define fi first #define se second #define sz(v) ((int)(v).size()) #d 阅读全文
posted @ 2021-03-13 16:17 cminus 阅读(163) 评论(0) 推荐(0)
摘要:感觉动态开点线段树空间复杂度好优秀呀 树剖裸题 把每个宗教都开一颗线段树就可以了 但是我一直TLE 然后调了一个小时 为什么呢 因为我 #define max(x, y) (x > y ? x : y) 看起来好像可以减少常数的样子 我也是这么想的(作死 事实上 ans = max(ans, que 阅读全文
posted @ 2018-03-19 02:29 cminus 阅读(154) 评论(0) 推荐(0)
摘要:很神奇的方法 感觉是有生之年都想不到正解的这种 考虑对i 到根的节点权值 + 1,则从根到z的路径和就是lca(i,z)的深度 所以依次把0 ~ n - 1的点权值 + 1 对于询问[l, r] 这个区间关于z 的深度和,就用(1, r) - (1, l - 1)的值表示 详见黄学长的博客啦 htt 阅读全文
posted @ 2018-03-18 23:10 cminus 阅读(172) 评论(0) 推荐(0)
摘要:ps:这道题过的人真多啊 一道树剖的模板题 (好像还可以用lct做, 然而我并不会 代码如下 阅读全文
posted @ 2017-06-19 08:20 cminus 阅读(166) 评论(0) 推荐(0)
摘要:第一次做树剖 找同学要了模板 + 各种借鉴 先用dfs在划分轻重链并编号, install的时候就从查询的节点到根寻找标记的点有多少个,再用深度减去标记的点的个数,并把路径上所有点都标记 uninstall就是搜索查询的点的子树的标记个数,并取消所有的标记。 代码如下 阅读全文
posted @ 2017-06-18 12:41 cminus 阅读(226) 评论(0) 推荐(0)