随笔分类 -  点分治

摘要:把权值为 $0$ 的边权值设为 $ 1$ 那么阴阳平衡的路径就是权值和为 $0$ 的路径 考虑点分治统计路径数 如果没有中间点的限制,那么只需要统计每种路径权值出现的个数,相加之和为 $0$ 的路径数用乘法原理统计即可 现在有了中间点的限制,那么就是根到该节点的路径上,出现了一个中间节点,该根到中间 阅读全文
posted @ 2020-03-26 21:43 Mrzdtz220 阅读(125) 评论(0) 推荐(0)
摘要:太菜了太菜了 点分治都不会写了 求一条路径长度不超过 $K$,且价值最大 点分治 遍历重心的每一个子树,得到一个子树之后先将 $(dep,val)$ 进行排序,然后 $dep$ 和 $val$ 必须同时增加,所以就是取 $val$ 的前缀 max 然后得到一个子树排好序的 $(dep, val)$ 阅读全文
posted @ 2020-02-19 01:48 Mrzdtz220 阅读(194) 评论(0) 推荐(0)
摘要:【传送门】 FFT第四题! 暑假的时候只会点分,然后合并是暴力合并的...水过去了... 其实两条路径长度的合并就是卷积的过程嘛,每次统计完路径就自卷积一下。 刚开始卷积固定了值域。T了。然后就不偷懒了,每次取最大权值乘二去找值域了。 #include <bits/stdc++.h> const d 阅读全文
posted @ 2019-11-19 01:24 Mrzdtz220 阅读(130) 评论(0) 推荐(0)
摘要:[传送门] 如果只有单组询问就是水题。多组询问就不能直接在线做了。考虑离线。 点分治,把当前重心到未被处理过的子树的距离放进一个数组,按距离从小到大排序。排完序后把这些节点替换成当前前缀权值最大的节点。因为如果到这个节点的距离为$r$,那么小于$r$的也能到达,所以取前缀max没有错。 然后对询问的 阅读全文
posted @ 2019-10-14 21:28 Mrzdtz220 阅读(166) 评论(0) 推荐(0)