随笔分类 -  数据结构--点分治 / 边分治

2019.4.25 一题——推式子+点分治
该文被密码保护。

posted @ 2019-04-25 17:55 Narh 阅读(0) 评论(0) 推荐(0)

洛谷 2664 树上游戏——点分治 / 思路
摘要:题目:https://www.luogu.org/problemnew/show/P2664 想到点分治的话,想到一条路径会对路径的两端点的 ans[ ] 有贡献,所以每次就考虑过重心的路径。 先想的是枚举颜色,每次做一种颜色。 枚举重心的一个子树的时候,就记录一下当前重心 cr 的其它子树里有几条 阅读全文

posted @ 2019-03-27 16:10 Narh 阅读(283) 评论(0) 推荐(0)

LOJ 2339 「WC2018」通道——边分治+虚树
摘要:题目:https://loj.ac/problem/2339 两棵树的话,可以用 CTSC2018 暴力写挂的方法,边分治+虚树。O(nlogn)。 考虑怎么在这个方法上再加一棵树。发现很难弄。 看了看题解,发现两棵树还有别的做法。 就是要最大化 d1[ x ] + d2[ x ] + d1[ y 阅读全文

posted @ 2019-03-07 08:14 Narh 阅读(352) 评论(0) 推荐(0)

LOJ 2553 「CTSC2018」暴力写挂——边分治+虚树
摘要:题目:https://loj.ac/problem/2553 第一棵树上的贡献就是链并,转化成 ( dep[ x ] + dep[ y ] + dis( x, y ) ) / 2 ,就可以在第一棵树上写边分治,把两边的点到第二棵树上建虚树,在虚树上 DP ,那么虚树上的当前点就是它不同子树里点的 l 阅读全文

posted @ 2019-03-06 15:35 Narh 阅读(274) 评论(0) 推荐(0)

bzoj 2870 最长道路tree——边分治
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2870 关于边分治:https://www.cnblogs.com/Khada-Jhin/p/10154994.html 自己写了那种把一个孩子连向自己,其他孩子连新建节点的重构图方法。 如果 阅读全文

posted @ 2019-03-01 17:58 Narh 阅读(316) 评论(0) 推荐(0)

UOJ 55 【WC2014】紫荆花之恋——点分治+平衡树
摘要:题目:http://uoj.ac/problem/55 点分治。在点分树上每个点上用 splay 维护管辖的点的情况。做几次就重构点分树。TLE。只能过 20 分。 #include<cstdio> #include<cstring> #include<algorithm> #define ll l 阅读全文

posted @ 2019-01-14 14:33 Narh 阅读(179) 评论(0) 推荐(0)

bzoj 3924 [Zjoi2015]幻想乡战略游戏——动态点分治(暴力移动找重心)
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3924 度数只有20,所以从一个点暴力枚举其出边,就能知道往哪个方向走。 知道方向之后直接走到点分树的那个部分的儿子上,即一下走到了那个方向的重心。这样只会走 log 次。 需要通过点分树上维护 阅读全文

posted @ 2018-12-28 23:22 Narh 阅读(260) 评论(0) 推荐(0)

bzoj 4372 烁烁的游戏——动态点分治+树状数组
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4372 和 bzoj 3070 震波 是一个套路。注意区间修改的话,树状数组不能表示 dis = 0 的位置,所以要手动改父亲的点权数组。 阅读全文

posted @ 2018-12-27 20:55 Narh 阅读(205) 评论(0) 推荐(0)

bzoj 3730 震波——动态点分治+树状数组
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3730 查询一个点可以转化为查询点分树上自己到根的路径上每个点对应范围答案。可用树状数组 f 。 但有重复,所以再开一个树状数组 g 记录上一层重心的含自己的那棵子树里各种距离的点值和。 查询的 阅读全文

posted @ 2018-12-27 19:48 Narh 阅读(270) 评论(0) 推荐(0)

hdu 5909 Tree Cutting——点分治(树形DP转为序列DP)
摘要:题目:http://acm.hdu.edu.cn/showproblem.php?pid=5909 点分治的话,每次要做一次树形DP;但时间应该是 siz*m2 的。可以用 FWT 变成 siz*mlogm ,但这里写的是把树变成序列来 DP 的方法,应该是 nlogn*m 的。 树上的一个点,如果 阅读全文

posted @ 2018-12-27 08:00 Narh 阅读(204) 评论(0) 推荐(0)

牛客网字节跳动冬令营网络赛——点分治(简化条件)
摘要:题目:https://ac.nowcoder.com/acm/contest/296/J 可以点分治,每次处理经过重心的路径。 合法的形态有这几种:,其中 [ ] 的第一个表示小于号的个数,第二个表示大于号的个数。“2”表示有多个。如果左边是 1 、右边是 k 的话,3的合法条件是 w[1]<=w[ 阅读全文

posted @ 2018-12-26 21:07 Narh 阅读(348) 评论(0) 推荐(0)

CF 293E Close Vertices——点分治
摘要:题目:http://codeforces.com/contest/293/problem/E 仍旧是点分治。用容斥,w的限制用排序+两个指针解决, l 的限制就用树状数组。有0的话就都+1,相对大小不变。 切勿每次memset!!!会T得不行。add(sta[ l ].len)即可,但要判一下(l= 阅读全文

posted @ 2018-08-15 20:09 Narh 阅读(542) 评论(0) 推荐(0)

洛谷 4178 Tree——点分治
摘要:题目:https://www.luogu.org/problemnew/show/P4178 点分治。如果把每次的 dis 和 K-dis 都离散化,用树状数组找,是O(n*logn*logn),会T7个点。 #include<iostream> #include<cstdio> #include< 阅读全文

posted @ 2018-08-14 21:36 Narh 阅读(238) 评论(0) 推荐(0)

洛谷 2634 [国家集训队]聪聪可可——点分治
摘要:题目:https://www.luogu.org/problemnew/show/P2634 可用点分治。 因为自己和自己也能算上,所以%3=0的点对可以随便一点算,都是 t [0] * t [0] 。 也许不用dfs两边,比如记一个lst,就可以用这次的第一个dfs得出上次的第二个dfs了。不过懒 阅读全文

posted @ 2018-08-14 20:19 Narh 阅读(148) 评论(0) 推荐(0)

洛谷 3806【模板】点分治1——点分治
摘要:题目:https://www.luogu.org/problemnew/show/P3806 点分治的第二道题! 和点分治的第一道题一模一样!就是多了一些询问罢了。(然而自己却写得漏洞百出,WA了数次……) 注意这回有边权为0的边,所以在 f [ sta[ i ] ] = 0 的时候可能把 f [ 阅读全文

posted @ 2018-08-14 18:54 Narh 阅读(147) 评论(0) 推荐(0)

洛谷 4149 [IOI2011]Race——点分治
摘要:题目:https://www.luogu.org/problemnew/show/P4149 第一道点分治! 点分治大约是每次找重心,以重心为根做一遍树形dp;然后对于该根的每个孩子,递归下去。递归之前把该根的vis设成1,就相当于删掉该点这边的这部分。 对于这道题,要开一个1e6的桶,就不能给每个 阅读全文

posted @ 2018-08-14 17:23 Narh 阅读(182) 评论(0) 推荐(0)

导航