摘要: 题面 DSU on tree确实很厉害,然后这变成了一道裸题(逃 还是稍微说一下流程吧,虽然我那个模板汇总里写过 DSU on tree可以以$O(n\log n)$的复杂度解决树上子树统计问题,它这样工作: 前置工作:对树进行轻重链剖分 1.递归求解所有的轻儿子,在回溯时消去影响 2.递归进入重儿 阅读全文
posted @ 2018-12-22 21:55 Speranza_Leaf 阅读(257) 评论(1) 推荐(0)
摘要: 题面 以报酬为标准维护一个大根堆,从根节点往上合并,每次踢掉若干人直到花费合法后更新答案 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int N=100005; 阅读全文
posted @ 2018-12-22 21:50 Speranza_Leaf 阅读(117) 评论(0) 推荐(0)
摘要: 题面 神**所有点都爆int,我还以为我写出什么大锅了,不开long long见祖宗。。。 动态点分治利用点分树树高不超过log的性质,我们对每个点维护一个子树和,一个点分树子树和,一个点分树上父亲的子树和。修改直接爬点分树,查询在点分树上往答案较小的儿子上跳,如果儿子都不如自己优说明自己就是最优的 阅读全文
posted @ 2018-12-22 21:48 Speranza_Leaf 阅读(181) 评论(0) 推荐(0)
摘要: 题面 重(新)学点分治中...... 普通的点分治一般这几步: 1.找重心 2.从重心开始DFS,得到信息 3.统计经过重心的路径 4.分别分治几棵子树,继续这个过程 然后是常见的(制杖的我的)一些疑问 1.这么统计不会漏吗 不会,你递归进子树的时候经过当前重心的已经统计完了,分别统计子树就行 2. 阅读全文
posted @ 2018-12-22 21:03 Speranza_Leaf 阅读(136) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2018-12-22 14:38 Speranza_Leaf 阅读(16) 评论(0) 推荐(0)