点分治
ACM败犬
这个作者很懒,什么都没留下…
展开
-
2019 南昌邀请赛 E.Interesting Trip(长链剖分)
题目大意:在一棵树上求路径长度等于 D,且路径 gcd>1\gcd > 1gcd>1 的路径总数。 n≤5∗105,D≤104,ai≤3∗104n \leq 5*10^5,D \leq 10^4,a_i \leq 3*10^4n≤5∗105,D≤104,ai≤3∗104 点分的做法:枚举根节点的因子 ppp (μ(p)≠0\mu(p) \ne 0μ(p)=0 ,即题解的反...原创 2019-11-06 22:27:38 · 319 阅读 · 0 评论 -
树分治总结(待续)
最近才学的树分治,总结一下该写的东西。 树分治分为点分治和边分治,先讲点分治吧 点分治,顾名思义是在树上按点进行分治。一般用于处理树上路径的问题(挺多题可以直接用更好写复杂度更低的树形dp替代),因为路径的问题可以分解为过某点的路径,而过某点我们就可以进行按点分治了。 树上点分治的一个重要思想就是每次从重心开始处理,重心的概念:重心是一个点且该点子节点最多的子树的结点树最少,这里最少是相对于其他点...原创 2019-04-04 11:01:11 · 131 阅读 · 0 评论 -
洛谷P2634_[国家集训队]聪聪可可:(树形dp_点分治)
聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃、两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好了,可是他们已经玩儿腻了这种低智商的游戏。 他们的爸爸快被他们的争吵烦死了,所以他发明了一个新游戏:由爸爸在纸上画n个“点”,并用n-1条“边”把这n个“点”恰好连通(其实这就是一棵树)。并且每条“边”上都有一个数。接下来由...原创 2019-03-28 14:40:26 · 211 阅读 · 0 评论 -
CF_1101_problem_D:GCD Counting(树形dp OR 树点分治)
题目大意:给出了一棵树,每棵树有一个权值,定义dist(x,y)为x到y的简单路径经过的结点的个数。定义gcd(x,y) 为x到y的简单路径上所经过的所有点的点权的最大公因数。现在问满足gcd(x,y) 大于 1的条件下,dist(x,y)的最大值是多少。 数据量和数据值均为2e5,因此每个数的素因子不超过7种。 先谈树形dp:路径上gcd大于1表示存...原创 2019-03-24 21:14:18 · 315 阅读 · 0 评论 -
洛谷P4178:Tree(点分治模板)
题目大意:询问树上距离小于等于K的点对有多少个 #include<bits/stdc++.h> using namespace std; #define lowbit(i) (i & (-i)) const int maxn = 4e4 + 10; int n,val[maxn + 10],k,root,f[maxn],sz[maxn],tot; bool done[maxn...原创 2019-08-05 19:46:02 · 161 阅读 · 0 评论 -
HDU 4812:D Tree(点分治 + 递推求逆元(模板))
题目大意:一棵 n 个结点的树,每个结点有一个权值,问你是否存在两个点对它们路径上的点值的乘积 mod (106+3)(10^6 + 3)(106+3) = k,如果有,输出字典序最小的方案。否则输出No solution 题解:由于时间卡得比较紧,用O(n)递推预处理逆元。因为 106+310^6 + 3106+3 是素数,如果已知 aaa,根据 (a∗b)mod &...原创 2019-08-06 00:10:03 · 141 阅读 · 0 评论 -
[SPOJ1825]:Free tour II(点分治 + 启发式合并)
题意:有一颗树,树上有黑点和白点,问两点间满足黑点不超过K个的简单路径的最大边权之和是多少。 题解:考虑点分治,以到分治中心的黑点数量为下标建树状数组维护每个点到分治中心的边权之和,合并答案时查询黑点不超过 k的最大值。这样做的复杂度为 n∗logn2n*logn^2n∗logn2,不足以通过 2e52e52e5的数据。 不用数据结构,考虑维护 g[i][k][j]:当前分治中心为 i,前 k 棵...原创 2019-08-08 14:44:44 · 216 阅读 · 0 评论 -
2019 Multi-University Training Contest 3:Yukikaze and Demons(点分治 + exgcd)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6605 题目大意:有一颗树树上每一个点都带有一个十进制位,定义f(u,v)为 u -> v路径上所有点的数位组成的十进制数,询问有多少对点满足f(u,v) % k == 0。 题解:树上路径问题,考虑点分治:设当前分治中心为 r, 路径(u,v)可以分为(u,r) ,(r,v)两段,第二段去掉r组...原创 2019-08-08 19:24:54 · 211 阅读 · 0 评论 -
HDU 5977:Garden of Eden(点分治 + 状压预处理)
题意:在一棵有n个点的树上,每个点有一个点权,最多有 k 种点权,问 简单路径上点权种类总共为 k 的点对有多少对。 题解:考虑点分治,由于k比较小,用一个state数组记录当前点到分治中心的路径上颜色的种类集合,这个种类集合可以用二进制状压。 每dfs完一棵子树,枚举已经dfs过的子树上的点暴力合并,若两个点的状态合并之后集合大小 = k,则更新答案。这样做是 n2log(n2)n^2log...原创 2019-08-07 18:53:48 · 230 阅读 · 0 评论