博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
特技树链剖分
阅读量:5921 次
发布时间:2019-06-19

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

线段树划分时按照子树的size平分

听说会变成一个log的,实际效果不明

BZOJ1036

#include 
#include
#include
#define LL long long using namespace std; struct treenode{ LL sum,maxi; int mid,l,r,lc,rc; }tr[400001]; int size[200001],nd[200001],next[400001],dep[200001],des[400001],fa[200001]; int heav[200001],top[200001],ori[200001],cnt,id[200001]; int a[200001],root[200001],n,t1,t2,dsize[200001]; char st[201]; void addedge(int x,int y){ next[++cnt]=nd[x];des[cnt]=y;nd[x]=cnt; } void dfs1(int po){ size[po]=1;int maxi=0; for (int p=nd[po];p!=-1;p=next[p]) if (!dep[des[p]]){ dep[des[p]]=dep[po]+1; fa[des[p]]=po; dfs1(des[p]); size[po]+=size[des[p]]; if (size[des[p]]>maxi){ maxi=size[des[p]]; heav[po]=des[p]; } } } void dfs2(int po,int tp){ top[po]=tp;ori[++cnt]=po;id[po]=cnt;dsize[po]=1; if (heav[po]) dfs2(heav[po],tp); for (int p=nd[po];p!=-1;p=next[p]) if (des[p]!=heav[po]&&dep[des[p]]==dep[po]+1){ dfs2(des[p],des[p]); dsize[po]+=size[des[p]]; } } void update(int po){ tr[po].maxi=max(tr[tr[po].lc].maxi,tr[tr[po].rc].maxi); tr[po].sum=tr[tr[po].lc].sum+tr[tr[po].rc].sum; } void build(int l,int r){ tr[++cnt].l=l;tr[cnt].r=r; if (l==r){ tr[cnt].sum=tr[cnt].maxi=a[ori[l]]; return; } int totd=0,mini=1e9,t=0;for (int i=l;i<=r;i++) totd+=dsize[ori[i]]; for (int i=l;i
tr[po].mid) ret+=segsum(tr[po].rc,max(tr[po].mid+1,tarl),tarr); return(ret); } LL quesum(int x,int y){ LL ret=0; while (top[x]!=top[y]){ if (dep[top[x]]
tr[po].mid) ret=max(segmax(tr[po].rc,max(tr[po].mid+1,tarl),tarr),ret); return(ret); } LL quemax(int x,int y){ LL ret=-1e9; while (top[x]!=top[y]){ if (dep[top[x]]

 

转载于:https://www.cnblogs.com/zhujiangning/p/7875302.html

你可能感兴趣的文章
CodeIgniter的密码处理论
查看>>
Spring Cloud Config服务器
查看>>
测试人员必学的软件快速测试方法(二)
查看>>
Agora iOS SDK-快速入门
查看>>
引入间接隔离变化(三)
查看>>
统一沟通-技巧-4-让国内域名提供商“提供”SRV记录
查看>>
cocos2d-x 3.0事件机制及用户输入
查看>>
比亚迪速锐F3专用夏季座套 夏天坐垫 四季坐套
查看>>
C++ 数字转换为string类型
查看>>
程序员全国不同地区,微信(面试 招聘)群。
查看>>
【干货】界面控件DevExtreme视频教程大汇总!
查看>>
闭包 !if(){}.call()
查看>>
python MySQLdb安装和使用
查看>>
Java小细节
查看>>
poj - 1860 Currency Exchange
查看>>
chgrp命令
查看>>
Java集合框架GS Collections具体解释
查看>>
洛谷 P2486 BZOJ 2243 [SDOI2011]染色
查看>>
linux 笔记本的温度提示
查看>>
(转)DOTA新版地图6.78发布:大幅改动 增两位新英雄
查看>>