点分治
小菜鸡加油
菜鸡
什么都能折磨
展开
-
Poj 1741Tree(点分治+容斥)
http://poj.org/problem?id=1741 思路: 这个题不能树状数组水过去。因为有负权边。 所以对于去重的部分要用容斥去做。 对于一颗子树内的贡献,我们跑完了这个重心的子树后,对其子树再跑一遍去除贡献。此时消去贡献需要加重心到这个儿子节点的边权,加上一个偏移量。 #include<iostream> #include<vector> #include<queue> #include<cstring> #include<cma原创 2021-05-08 14:23:11 · 121 阅读 · 0 评论 -
P4178 Tree(点分治+树状数组/容斥)
https://www.luogu.com.cn/problem/P4178 思路: 对u遍历每一棵子树,计算出dis,并询问前面子树有多少个点深度小于等于k−d[i] ,查询有多少值<=k-d[i]的,树状数组就好了。询问结束后把这个子树的答案累加进数组。遍历完所有子树后清空当前u的所有子树答案。注意是Dfs清空。 点分治后复杂度O(nlognlogn) #include<iostream> #include<vector> #include<queue>原创 2021-05-07 20:53:00 · 131 阅读 · 0 评论 -
P3806 【模板】点分治1(模板)
https://www.luogu.com.cn/problem/P3806 点分治还有边分治。暂时补个点分治。 感觉这个算dis的那部分和dsu on tree的暴力很类似阿。确实看到题解区里有一个用了dsu on tree的。 到时候都要重新理... 思路: 首先要考虑如何计算答案,对于每个距离,他要不经过当前的根节点,要不就是在根节点的子树里。我们算好当前经过根节点的所有距离并存下。然后递归,这样就能处理原来在根节点的子树里的距离(他们总会变成根的)。 算有无出现的距离就类似背..原创 2021-05-03 17:18:48 · 114 阅读 · 1 评论