点分治
文章平均质量分 61
DZYO
Never stop
展开
-
LOJ#2339. 「WC2018」通道(边分治+虚树)
传送门题解:考虑两棵树怎么做,要求maxd1(x)+d1(y)−2∗lca1(x,y)+dis2(x,y)\max d_1(x)+d_1(y)-2*lca_1(x,y)+dis_2(x,y)maxd1(x)+d1(y)−2∗lca1(x,y)+dis2(x,y),把x′x'x′挂在xxx下面,长度为d1(x)d_1(x)d1(x),然后就是max−2∗lca1(...原创 2018-10-07 16:12:13 · 258 阅读 · 0 评论 -
LOJ#2553. 「CTSC2018」暴力写挂(边分治+线段树合并)
传送门题解:按照套路,变成求d1(x,y)+dx+dy−2∗d′lca′(x,y)d_1(x,y)+d_x+d_y-2*d'lca'(x,y)d1(x,y)+dx+dy−2∗d′lca′(x,y)然后出个二。在第二棵树里面做,相当于支持一下不同子树内部点距离的最大值。可以边分治,然后就跟线段树结构一样了,合并成了O(nlogn)O(n \log ...原创 2018-10-05 14:57:29 · 713 阅读 · 0 评论 -
BZOJ1921: [Ctsc2010]珠宝商(点分治+SAM)
传送门题解:点分治,如果点数≥n\ge \sqrt{n}≥n,则结合后缀树O(sze+m)O(sze+m)O(sze+m)处理出每个位置的开始,结束点并统计答案。否则从每个点开始暴力扩展路径。时间复杂度O(nn)O(n \sqrt{n})O(nn)。#include <bits/stdc++.h>using namespace std;typedef pair <...原创 2018-09-20 15:05:37 · 351 阅读 · 0 评论 -
Codeforces Round #467 (Div. 1) E:Iqea(点分治)
传送门题解: 把每列的不同联通块看做一个点,相邻列若有共同的纵坐标有格子那么连边,这样会形成一棵树,且网格上两点的路径就是树上的一条路径。然后就是点分治裸题,不过算距离比较麻烦。 注意到两点的路径最终在某一列的某一块停止,且进入的时候一定之前走的是最短距离(容易证明进入的点也是唯一的),那么这两点的距离等于两个最短距离加上进入的纵坐标绝对值差,即:da+db+|ya−yb|da+db+...原创 2018-03-05 16:49:38 · 541 阅读 · 0 评论 -
BZOJ2402: 陶陶的难题II(点分治)
传送门题解: 建出点分树,之后对于每个询问二分答案midmidmid,用分数规划的思想,相当于求max{y−x∗mid}max{y−x∗mid}\max \{y-x*mid\}。最优点在凸包上,之后对于每个分治中心都处理出所有子节点到他的路径上的凸包(用dfs序做),然后在lognlogn\log n个凸包上二分查询切点,时间复杂度O(nlog3n)O(nlog3n)O(n \log^3...原创 2018-02-24 19:42:37 · 330 阅读 · 0 评论 -
BZOJ3924: [Zjoi2015]幻想乡战略游戏(动态树分治)
传送门 题意: 给一棵树,每次给一些点增加点权,求一个点,使得∑j≠idis(i,j)∗val[j]\sum\limits_{j\not = i}dis(i,j)*val[j]最小,输出最小值。题解:动态树分治官方题解已经讲得很清楚了: 首先我们假设每次操作过后我们可以快速地在线查询以任意一个点为关键点得到的权值和,那么在这种情况下如何求出最小权值? 为了表达方便,我们不妨原创 2017-09-10 22:11:40 · 533 阅读 · 0 评论 -
NOI模拟:第k大(点分治)
题意: 给一颗边带全的数,对于每一个点有kik_i,求从每个点出发第kik_i远的距离。题解: 点分治。 建出点分树并在每一个节点储存管辖区域的距离,在每一个儿子节点记录对父亲的贡献,查询每一个点时二分,再暴力爬树高验证可行性就好了。#include<bits/stdc++.h>using namespace std;struct io{ streambuf *ib,*ob;原创 2017-09-16 21:14:22 · 332 阅读 · 0 评论 -
poj1741:Tree(点分治模板)
传送门题意: 求一颗树上长度不超过k的路径。题解: 点分治模板。#include<iostream>#include<vector>#include<algorithm>using namespace std;typedef pair<int,int> pii;streambuf *ib,*ob;inline int read(){ char ch=ib->sbumpc();原创 2017-09-07 17:15:25 · 291 阅读 · 0 评论 -
CC PRIMEDST(点分治+FFT)
题意给你一颗树,求距离为质数的点对个数。题解裸题。。。 顺便打一份点分治的板,以前打错板从来没错过。。。#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>#include<cmath>#include<vector>using namespace std;原创 2017-07-27 19:45:36 · 682 阅读 · 1 评论 -
集训队作业2018: 树(点分治+K短路)
题解:最近学数分学到意识模糊,做到OI题冷静一下。联通块强制选根,然后用dfs序转化为一个路径然后就是做K短路了。用点分治即可在图大小为O(nlogn)O(n \log n)O(nlogn)的图上做K短路,时间复杂度O(nlog2n+klogk)O(n \log ^2 n + k\log k)O(nlog2n+klogk)。#include <bits/stdc++.h>...原创 2019-01-12 16:50:06 · 655 阅读 · 2 评论