点分树
LowestJN
强省弱OIer
展开
-
[BZOJ3924][Zjoi2015][点分树][暴力]幻想乡战略游戏
年前的坑今天补……题意求一棵树的带权重心,支持修改权值。动态树分治,也叫点分树。 就是把每层的重心连成一棵树,然后在这棵树上乱搞(具体网上教程多)。不过第一次写这题暴力碾过去了…..好像还挺快的….先讲暴力 假设上一次找到的重心在u,那么如果在某一点v增加了权值,那当前的重心一定是在u到v的相反方向上,只要沿着相反方向找就行了。具体怎么找…可以这么想: 当前结点为x,y为与x相邻的结点,w[x原创 2017-02-05 19:07:36 · 760 阅读 · 0 评论 -
[BZOJ4372][动态树分治(点分树)][动态开点线段树]烁烁的游戏
题意给一颗n个节点的树,边权均为1,初始点权均为0,m次操作: Q x:询问x的点权 M x d w:将树上与节点x距离不超过d的节点的点权均加上wdfs出点分树每个重心要记录这个重心以下的子点分树的修改信息,可以用区间覆盖单店查询的线段树维护,因为会有重复的部分,每个重心还要再开一棵线段树记录重复的部分#include <cstdio>#include <iostream>#include原创 2017-02-28 18:23:19 · 809 阅读 · 0 评论 -
[BZOJ3730][点分树][树状数组]震波
直接建出点分树,树上搞个线段树什么的就可以了…… 然而我常数丑……就用树状数组了…… 代码也很丑#include <cstdio>#include <iostream>#include <algorithm>#include <string>#include <cstring>#define N 200010using namespace std;int n,m,cnt,Size,Ma原创 2017-03-29 18:12:46 · 1069 阅读 · 0 评论 -
[点分树][二分] [BZOJ4317]Atm的树 && [BZOJ2117][2010国家集训队]Crash的旅游计划 &&[BZOJ2051]A Problem For Fun
题意求一棵树上,以每个点为起点的第k短路径双倍经验对于每一个点,二分答案,那么只要判断与当前点距离小于等于二分出来的答案的点的个数是否等于k就行了复杂度nlog^3n,数据点应该不多……表示树上倍增常数太大了……#include <cstdio>#include <iostream>#include <algorithm>#include <vector>#include <queue>#原创 2017-03-14 17:40:52 · 902 阅读 · 0 评论 -
[BZOJ4775][点分树][概率与期望][数学][卡精度]网管
大小号贡献13次提交……这题卡精度啊!!有个地方int改成long long就过了首先,平方的期望不等于期望的平方, E(X2)=DX+E(X)2E(X^2)=DX+E(X)^2,DXDX为X所有情况的方差,为p(1−p)p(1-p)。 在这题中p就是这个节点为黑店的概率推一推咯 Ans=E((∑x∈Bdist(x,s))2)Ans=E((\sum_{x\in B}dist(x,s))^2)原创 2017-03-25 22:47:06 · 750 阅读 · 0 评论 -
[点分树] Codechef December Challenge 2017. Chef, Leonardo And Queries
我好像只会套路数据结构题了…暴力上点分树,这样的递推形式可以用矩阵表示,那么对于点 ii ,它的线段树上区间覆盖上 fdis(i,u)×Af_{dis(i,u)}\times A 的表示,其中 fif_i 表示转移矩阵的 ii 次方,AA 就是题目给出的 a,ba,b 构成的矩阵。然后询问点 ii 管辖的点 jj 的时候,线段树中询问得到的结果乘上 fdis(i,j)f_{dis(i,j)} 就好了原创 2017-12-11 20:48:01 · 287 阅读 · 0 评论