首页 技术 正文
技术 2022年11月16日
0 收藏 769 点赞 3,608 浏览 1508 个字

BZOJ 1468 Tree 【模板】树上点分治

 #include<cstdio>
#include<algorithm>
#define N 50010
#define M 500010
#define rg register
#define LL long long
using namespace std;
int n,m,cnt,root,tot,totnow,totbf;
int last[N],size[N],mxsize[N],dep[N],tmp[N],mg[N];
LL ans=;
bool v[N];
struct edge{
int to,pre,dis;
}e[M];
inline int read(){
int k=,f=; char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(''<=c&&c<='')k=k*+c-'',c=getchar();
return k*f;
}
void getroot(int x,int fa){
size[x]=; mxsize[x]=;
for(rg int i=last[x],to;i;i=e[i].pre)if(!v[to=e[i].to]&&to!=fa){
getroot(to,x); size[x]+=size[to];
mxsize[x]=max(mxsize[x],size[to]);
}
mxsize[x]=max(mxsize[x],cnt-mxsize[x]);
if(!root||mxsize[x]<mxsize[root]) root=x;
}
void getdep(int x,int fa,int d){
dep[++totnow]=d;
for(rg int i=last[x],to;i;i=e[i].pre)
if(!v[to=e[i].to]&&to!=fa) getdep(to,x,d+e[i].dis);
}
void dfs(int x){
v[x]=; totbf=; tmp[]=;
for(rg int i=last[x],to;i;i=e[i].pre)if(!v[to=e[i].to]){
totnow=; getdep(to,x,e[i].dis); sort(dep+,dep++totnow);
int p=;
for(rg int j=totbf;j;j--){
while(p<=totnow&&tmp[j]+dep[p]<=m) p++;
ans+=p-;
}
p=; int p2=,totmg=;
while(p<=totnow&&p2<=totbf)
mg[++totmg]=dep[p]<tmp[p2]?dep[p++]:tmp[p2++];
while(p<=totnow) mg[++totmg]=dep[p++];
while(p2<=totbf) mg[++totmg]=tmp[p2++];
for(rg int j=;j<=totmg;j++) tmp[j]=mg[j];
totbf=totmg;
}
for(rg int i=last[x],to;i;i=e[i].pre)if(!v[to=e[i].to]){
root=; cnt=size[to];
getroot(to,x); dfs(root);
}
}
int main(){
n=read();
for(rg int i=;i<n;i++){
int u=read(),v=read(),w=read();
e[++tot]=(edge){v,last[u],w}; last[u]=tot;
e[++tot]=(edge){u,last[v],w}; last[v]=tot;
}
m=read();
cnt=n; getroot(,); dfs(root);
printf("%lld\n",ans);
}

  

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,083
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,558
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,407
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,180
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,817
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,900