点分治
pubgoso
这个作者很懒,什么都没留下…
展开
-
洛谷P2664 树上游戏
题目链接思路:直接做好像有点困难… 那考虑点分治。我们把路径分成经过分治重心的和不经过分治重心的。那么,我们在递归处理某个重心的时候,就可以算出所有点的在此分治重心下的答案。具体实现:考虑x色是根到当前y位置第一次出现的x色,那么这个x就能提供sz_y(当前分治重心下以y为根的子树大小)的贡献给其他跨过分治重心的点。我们用数组tmp来记录某个颜色的总贡献。所有颜色的总贡献用res表示。我们在计算某个点的答案时,要去掉根到当前点的颜色所产生的贡献。这在dfs过程中可以统计出来,需要注意的是算贡献的过程原创 2020-08-28 13:48:21 · 199 阅读 · 0 评论 -
2019icpc沈阳网络赛 D. Fish eating fruit (点分治)
题目链接大意:让你求树上%3后分别为0,1,2的所有路径之和。思路:树上路径分为两种,过根节点的,和 在子树的,所以直接点分治,在计算每个根节点的贡献的时候,统计一下%3分别为0 1 2 的路径数,和 路径和,然后每次直接算一下贡献就好了。细节见代码:#include<bits/stdc++.h>#define fi first#define se second#def...原创 2019-09-15 09:56:28 · 216 阅读 · 0 评论 -
luogu3806 点分治模板
题目链接每次找重心,然后处理每个子树。// luogu-judger-enable-o2#include<bits/stdc++.h>#define fi first#define se second#define pb push_back#define mp make_pair#define LL long long#define SZ(X) X.size()#...原创 2019-09-16 14:11:55 · 148 阅读 · 0 评论 -
VK Cup 2012 Round 1 D.Distance in Tree(点分治)
题目链接大意:给你一棵树,问你树上距离等于x的无序点对个数点分治模板题,直接做#include<bits/stdc++.h> #define fi first#define se second#define pb push_back#define mp make_pair#define LL long long#define SZ(X) X.size()#defi...原创 2019-09-16 16:06:33 · 141 阅读 · 0 评论