博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Codeforces757G]Can Bash Save the Day?——动态点分治(可持久化点分树)
阅读量:6272 次
发布时间:2019-06-22

本文共 1698 字,大约阅读时间需要 5 分钟。

题目链接:

 题目大意:给出一棵n个点的树及一个1~n的排列pi,边有边权,有q次操作:

1 l r x 求 $\sum\limits_{i=l}^{r}dis(p_{i},x)$

2 x $swap(p_{x},p_{x+1})$

$n,q<=2*10^5$,强制在线

如果多次询问一个点到所有点的距离和,我们可以点分树解决,在点分树上每个点x维护点分树上x子树中的所有点到x的距离和及所有点到x父节点的距离和,每次询问往根爬容斥一下求和即可。如果没有修改操作我们依旧可以每个点对pi建线段树来区间求和,但有了修改操作在修改时时间复杂度会爆炸。我们依据可持久化线段树区间查询的原理也可以对点分树进行可持久化,按照pi的顺序每个版本往点分树中插入一个点的信息,建出对应的一条链并将链上点没建出的子节点连向上一个版本的对应节点,每个点同样维护上述两个信息,但如果直接连接可能一个点会有许多儿子,这样时间复杂度就不对了,因此我们将多叉树转二叉树(具体操作详见),这样一个点的出边最多只有三个,点分树上的子节点数也就最多只有三个。具体的可持久化点分树插入和查询操作参见。因为可持久化点分树每个版本相当于保存了一个前缀和,所以查询时直接用r版本的答案减l-1版本的答案即可。对于修改操作,可以发现实际需要修改的就只要x这个版本,那么我们重建x版本的点分树即可。

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long#define pr pair
using namespace std;ll z;ll ans;int op;int cnt;int tot;int x,y;int l,r;int dfn;int rot;int num;int n,m,q;ll d[400010];int a[200010];int p[400010];int val[800010];int to[800010];int lg[800010];int mx[400010];int dep[400010];int vis[400010];int size[400010];int nxt[800010];int head[400010];int g[800010][20];int root[200010];vector
v[200010];vector
pre[400010];struct miku{ int son[3]; int res; int lty; ll sum; ll fsum;}s[12000010];void add(int x,int y,ll z){ tot++; nxt[tot]=head[x]; head[x]=tot; to[tot]=y; val[tot]=z;}void rebuild(int x,int fa){ int len=v[x].size(); int last=0; int tmp=0; for(int i=0;i
>1]+1; } for(int j=1;j<=19;j++) { for(int i=1;i+(1<
<=dfn;i++) { g[i][j]=mn(g[i][j-1],g[i+(1<<(j-1))][j-1]); } }}ll lca(int x,int y){ x=p[x],y=p[y]; if(x>y) { swap(x,y); } int len=lg[y-x+1]; return mn(g[x][len],g[y-(1<

转载于:https://www.cnblogs.com/Khada-Jhin/p/10175454.html

你可能感兴趣的文章
试水区块链出版?纽约时报在招人了
查看>>
拥抱PostgreSQL,红帽再表态:SSPL的MongoDB坚决不用
查看>>
QCon演讲速递:异步处理在分布式系统中的优化作用
查看>>
Javascript 中的 Array 操作
查看>>
YARN的AsyncDispatcher原理
查看>>
java中包容易出现的错误及权限问题
查看>>
AngularJS之初级Route【一】(六)
查看>>
服务器硬件问题整理的一点总结
查看>>
SAP S/4HANA Cloud: Revolutionizing the Next Generation of Cloud ERP
查看>>
Mellanox公司计划利用系统芯片提升存储产品速度
查看>>
白帽子守护网络安全,高薪酬成大学生就业首选!
查看>>
AMD 16核心Zen处理器首曝:四通道DDR4
查看>>
阿里大数据打假:实时分析数据每秒1亿次
查看>>
如何入手 dubbo
查看>>
英国网络安全公司Darktrace获6400万美元C轮融资
查看>>
CYQ.Data+EasyUI开发:几个相关的问题CheckBox、Tree、TreeGrid
查看>>
Extjs分页使用Java实现数据库数据查询
查看>>
BayWa收购光伏分销商Solarmatrix进军澳大利亚市场
查看>>
股东致函雅虎董事会要求别再烧钱 雅虎反呛
查看>>
移动OA的魅力--大众点评的“企业号”运用法则
查看>>