
点分治
Mys_C_K
人生有许多道:曾经踏足的是道,即将踏往的也是道,那什么才是道呢?唯有脚下走的才是道。一切精神或者物质都归于虚无,然后从混沌中衍生出三万道。在悲喜间涉足一条无数前人经历过,且将有无数后人奔赴的道,无论是否已经或者将要到达彼岸,然后便不再回头或是左顾右盼,即使有些道繁盛至极,夜灯如昼,无数人一浪又一浪的涌去,造就了世人皆知的辉煌;即使有些道草木凋敝,荒草丛生,只等勇敢的开拓者斩开荆棘,创造一片天地;这些都无所关,无所在意,彼岸何如、来日何方甚至过往旧事都化作一缕云烟,飘渺碧霄,我自撷高山之月色,独随足落处往行。
展开
-
BZOJ2512 聪聪可可 - 点分治
传送门题解:点分治模板题代码://BZOJ 2152#include#include#include#define MAXN 20010#define MAXM 40010#define cls(x) cnt[x][0]=cnt[x][1]=cnt[x][2]=0;#define debug(x) cerr<<#x<<"="<<x#define sp <<" "#de原创 2017-07-24 12:56:54 · 379 阅读 · 0 评论 -
game - 期望 - 点分治 - FFT
题目大意:给一棵树,每次随机选择一个点,将其所在连通块点权都+1并且删掉这个点,问最后所有点点权和的期望。题解:考虑这个过程是在随机点分治,一个点的点权就是这个点的深度,即其祖先数量。那么考虑y在多少情况中能作为x的祖先,不难发现当且仅当x到y的路径上(不包含y)的点被删除时间都严格大于y。那么显然是有n!len+1\frac{n!}{\mathrm{len}+1}len+1n!种。因此...原创 2018-12-19 10:28:28 · 316 阅读 · 0 评论 -
svisor - 动态点分治 - 虚树
题目大意:给你一颗树,多次询问,每次询问给定k个关键点以及每个点的半径,问这k个点能够覆盖到的点的并集的大小。题解:考虑k=1怎么做:直接动态点分治即可。考虑建出虚树,重新更新每个点的半径使得不存在两个点,其中一个延申到另一个时,半径仍然大于另一个。考虑我们已经处理虚树上x的前若干棵子树的点,能够覆盖到的点的并集,现在新增一颗子树y并进去,那么要减去新增后重复计算的点,方法是虚树上(x,...原创 2018-12-22 13:57:35 · 445 阅读 · 0 评论 -
bzoj 3730 震波 - 动态点分治 - BIT
垃圾卡常题bz上过不了#include&lt;bits/stdc++.h&gt;#define gc getchar()#define rep(i,a,b) for(int i=a;i&lt;=b;i++)#define Rep(i,v) rep(i,0,(int)v.size()-1)#define lint long long#define N 100010#define db ...原创 2018-10-26 21:29:24 · 195 阅读 · 0 评论 -
魔法树 - 提答 - 点分治
题目大意:现在有人用一下方法独立生成了T棵大小为n的树:每次选择任意两点x和y,若二者不连通则连接x和y。这个人将其中某些树求了一波点分树,每层重心多个取最小。现在问你哪些是被操作过的。T=1000,60≤n≤1000T=1000,60\le n\le1000T=1000,60≤n≤1000。题解:显然点分树重心也是原树重心,其次其每个儿子也应当是其子树的重心,以此类推……然后就过了,...原创 2018-10-10 16:30:16 · 200 阅读 · 0 评论 -
bzoj 4182 shopping - 树dp - 点分治
考虑一个O(n2m)O(n^2m)O(n2m)的暴力,枚举一个点当根,然后按照dfs序的最后一次访问为阶段做dp,那么每个点要么其子树完全不选(等价于之考虑了Lvis[x]-1),要么就直接在Rvis[x]-1上选x(把x得子树合并起来)。用点分治优化上述过程即可。实际上也可以用dsu on tree做,常数更小。点分治:#include&lt;iostream&gt;#include&lt...原创 2018-09-20 16:59:28 · 280 阅读 · 0 评论 -
巧克力之树 - 点分治 - 树状数组 - LCT
题目大意:给一颗边有权的树,求有多少路径满足边权最大值减去最小值不超过k,1e5。 题解:用BIT维护点分治过程中的二维数点或者直接LCT即可。 点分治#include&amp;amp;lt;iostream&amp;amp;gt;#include&amp;amp;lt;cstring&amp;amp;gt;#include&amp;amp;lt;cstdio&amp;amp;gt;#include原创 2018-09-02 14:44:27 · 262 阅读 · 0 评论 -
[ZJOI2007] bzoj 1095 Hide 捉迷藏 - 动态点分治 - 学习笔记
动态点分治.屯板子#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<map>#include<queue>#define N 100010#define M N<<1#define原创 2018-04-12 11:46:13 · 284 阅读 · 0 评论 -
bzoj 4372 烁烁的游戏 - 点分治 - 线段树
动态点分治裸题#include<iostream>#include<cstring>#include<cstdio>#include<map>#include<algorithm>#define N 100010#define debug(x) cerr<<#x<<"="&a原创 2018-04-17 18:46:16 · 245 阅读 · 0 评论 -
最近点 - 可持久化点分树 - 主席树
题目大意:给一棵树,点有黑白,每次形如翻转一个点颜色,询问到某个点的最近黑色点距离,以及返回之前某个版本。题解:显然将点分树可持久化一下,然后用一个可持久化堆(虽然写了个可持久化线段树)维护一下即可。点分树可持久化可以暴力拿个主席树维护点分树的点到堆的编号的映射,也可以将原树三度化之后直接可持久化,后者这部分复杂度一个log(但是并不很快)。#include<bits/stdc++.h&...原创 2019-03-19 15:59:52 · 561 阅读 · 0 评论