题目描述 给定一棵有n个点的树 询问树上距离为k的点对是否存在。 (多次询问&&可离线) 我们先随意指定一个虚拟根root,将这棵树转化成无根树 树上的路径可以分为两类, 1.经过根节点u的路径 2.完全在u子树里(不经过u)的 对于1,用dis表示当前结点到根节点root的路径长度, 则root的 ...
分类:
其他好文 时间:
2019-02-18 16:08:39
阅读次数:
160
这里只是一个博主要填的坑的列举: DP: 状压DP 树形DP 各种各样的优化DP DDP(三年后的事) 分治: 点分治 根号分治 …… 树: 主席树 树套树 可持久化线段树 …… 图论: 网络流 …… 其他: AC自动机 数论&&高等数学 …… 完了这些坑我十年都填不完了qwq ...
分类:
其他好文 时间:
2019-02-10 00:22:46
阅读次数:
154
题目 "题面" 大意是给你一个图,要你构建出一棵最短路树,再询问经过k个点的最长路径长度以及最长路径条数。 思路 点分治。 点分治的思路是这样的: 对于一个点$x$而言,对答案有影响的路径要么经过点$x$要么不经过,利用这点进行分治。 点分治首先要找出一个重心。重心是指以该点为根所有的子树中sz最大 ...
分类:
其他好文 时间:
2019-02-09 10:28:12
阅读次数:
225
maya任务太多辣,,,所以决定每天计划下第二天要做什么,,,不然太颓辣QAQ 2.8 [ ]AC自动机搞完(8:00pm [ ]考试题目落实(9:30pm [ ]单调队列搞完(10:30pm 2.9 [ ]构造图论搞完(上午 [ ]点分治初涉猎(下午 [ ]贪心学习总结(晚上 ...
分类:
其他好文 时间:
2019-02-08 20:13:50
阅读次数:
158
动态点分治 考虑从每一个"块"里找到距离k范围内的点的和 为了去重, 每个x维护两个线段树:(都是关于自己分治树子树的点) 1.下标为距离x的距离,权值为val的 2.下标为距离x的分治树father的距离,权值为val 这样,统计的时候 计算分治树祖先块的时候,把从自己那里出来的块的东西再减去 注 ...
分类:
其他好文 时间:
2019-02-06 15:47:17
阅读次数:
126
"题目链接" 一开始想到点分治, 其实不是很好搞. 因为分治每次是计算的过某个点的答案, 所以我们也可以按一定的顺序计算贡献. 因为题目是按照最大值最小值计算贡献的, 所以按照从小到大的方式计算贡献. 先求最大值, 然后一起减去最小值贡献就可以了. 所以我们从小到大排序后, 对于每个相邻联通块之间的 ...
分类:
其他好文 时间:
2019-01-27 10:49:23
阅读次数:
158
#include <bits/stdc++.h> const int MaxN = 100010; const int lim = 10000010; struct edge { int to, next, dis; }; edge e[MaxN << 1]; int query[1010], su ...
分类:
其他好文 时间:
2019-01-24 16:36:57
阅读次数:
138
传送门 十分显然的点分治 枚举所有点作为两点的LCA 开一个桶$pd$判断之前子树内是否出现过此路程 对于每一个子树都把子树到根的所有路程dis都考虑匹配 如果 $pd[K-dis]=1$ 那么就说明存在匹配 然鹅题目还要求在合法匹配中选最少经过边数的匹配 那么再开一个数组 $dd$ ,$dd[i] ...
分类:
其他好文 时间:
2019-01-23 14:01:00
阅读次数:
170
Luogu2664 树上游戏 题目描述 [传送门][1] 题目分析 考虑到没有修改,只有一次询问,判断应该点分治没跑了。 可以发现有这样一个性质: 如果有一个点$i$的颜色是其根到这个点的链上第一次出现的,则与这个点的$lca$为根的点的$sum$都会增加$size[i]$。 (我们此时不考虑其他点 ...
分类:
其他好文 时间:
2019-01-19 20:00:44
阅读次数:
153
CF1101D GCD Counting 又被trick了 不用什么点分治 直接树形dp即可 开始的想法: f[x][j]x为根的子树gcd至少为j(j是x的一个约数)的最长链 然后对y合并。类似于树的直径 但是复杂度还是很大的。。。 这个题的关键是:我们只关心gcd是不是1,并不关心gcd是什么! ...
分类:
其他好文 时间:
2019-01-17 21:23:53
阅读次数:
153