点分治
stargazer.
夜を穿つの
展开
-
【LOJ #2386】「USACO 2018.01 Platinum」Cow at Large(点分治 / 树状数组)
传送门不知道为什么lglglg题解里清一色只会用∑d=2m−1→1=2m−∑d\sum d=2m-1\rightarrow 1=2m-\sum d∑d=2m−1→1=2m−∑d容斥做法设mnleafu\mathit{mnleaf_u}mnleafu表示距点uuu最近的叶子节点的距离这个可以用脚dfsdfsdfs随便O(n/nlogn)O(n/nlogn)O(n/nlogn)做对于一个根的...原创 2020-04-26 22:07:50 · 764 阅读 · 0 评论 -
【LOJ #3070】「2019 集训队互测 Day 1」最短路径(分治 / NTT / 点分治)
传送门想一秒,写一年找出环,对于每个子树点分+NTT+NTT+NTT即可对于环分治计算即可复杂度O(nlog2n)O(nlog^2n)O(nlog2n)#include<bits/stdc++.h>using namespace std;#define cs const#define re register#define pb push_back#define p...原创 2020-04-16 17:19:21 · 343 阅读 · 0 评论 -
【Codeforces 566 C】Logistical Questions(求导+点分治)
传送门由于x32x^{\frac 3 2 }x23是单调函数在一条链上可以二分看往哪边更优求导加起来即可得到变化量在树上就点分就可以了#include<bits/stdc++.h>using namespace std;#define cs const#define re register#define pb push_back#define pii pair&l...原创 2020-01-18 17:45:39 · 330 阅读 · 0 评论 -
【LOJ#2249】「NOI2014」购票(点分治+斜率优化DP)
传送门显然的斜率优化DPDPDP第一眼想到的是用可持久化数组维护单调栈但是觉得懒得写就放弃了点分治后用重心向上的链更新重心子树感觉也可以看做树上CDQCDQCDQ一样的东西代码写的我自己很丑#include<bits/stdc++.h>using namespace std;#define cs const#define re register#define pb...原创 2019-11-07 22:12:03 · 166 阅读 · 0 评论 -
【洛谷P3345】【ZJOI2015】—幻想乡战略游戏(动态点分治)
传送门由于基础的求带权重心都是O(n)O(n)O(n)的考虑优化,考虑到以uuu为根的树如果重心在儿子vvv的子树,那么显然以vvv为补给站也肯定会比uuu优那么我们可以在树上二分,每次看带权重心在哪颗子树暴力跳多次询问可以点分树来解决二分考虑具体实现我们记录一个dis1dis1dis1表示点分树中uuu的子树到uuu的贡献dis2dis2dis2表示uuu对点分树的父亲的贡献...原创 2019-02-16 09:08:17 · 223 阅读 · 0 评论 -
【Codechef】—Prime Distance On Tree(点分治+FFT)
传送门fftfftfft水题看到询问路径就想到点分治令cnt[i]cnt[i]cnt[i]表示当前中心,深度为iii的点的个数ans[i]ans[i]ans[i]表示长度为iii的路径的个数则ans[i]=∑j=0icnt[j]∗cnt[i−j]ans[i]=\sum_{j=0}^{i}cnt[j]*cnt[i-j]ans[i]=∑j=0icnt[j]∗cnt[i−j]也就是cntc...原创 2019-03-14 16:06:31 · 344 阅读 · 0 评论 -
【BZOJ1758】【WC2010】—重建计划(点分治+分数规划)
传送门%%%wcrwcrwcr太巨辣一眼分数规划,二分一个midmidmid,每条边减去midmidmid,现在就变成了是否存在一条路径满足L≤len≤UL\le len\le UL≤len≤U且权值和大于000显然可以点分治考虑对于当前分治中心,处理出一个fff表示已经遍历的子树中的每个深度的最大值,然后遍历当前某个子树,再处理出每个深度的最大值,然后就可以维护一个单调队列来做了但是发...原创 2019-03-12 07:58:32 · 237 阅读 · 1 评论 -
【BZOJ3451】【Tyvj1953】—Normal(点分治+NTT)
传送门Description某天WJMZBMR学习了一个神奇的算法:树的点分治!这个算法的核心是这样的:消耗时间=0Solve(树 a)消耗时间 += a 的 大小如果 a 中 只有 1 个点退出否则在a中选一个点x,在a中删除点x那么a变成了几个小一点的树,对每个小树递归调用Solve我们注意到的这个算法的时间复杂度跟选择的点x是密切相关的。如果x是树的重心,那么时间复杂...原创 2019-06-01 18:03:30 · 211 阅读 · 0 评论 -
雅礼集训2019Day2 T2—Bracket(点分治+FFT)
描述给定一棵有 nnn 个节点的无根树,每个节点上是一个字符,要么是(((,要么是)))。定义 S(x,y)S(x, y)S(x,y) 为从$ $x 开始沿着最短路走到 yyy,将沿途经过的点上的字符依次连起来得到的字符串。 合法括号序定义如下:1,()()()是合法的。2,若 AAA合法,则(A)(A)(A)也合法。3,若 A,BA, BA,B 分别合法,则 ABABAB 也合法。函...原创 2019-07-24 14:22:01 · 299 阅读 · 0 评论