博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[模板]点分治
阅读量:5286 次
发布时间:2019-06-14

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

试题分析

其实就是一个十分暴力的算法,每次找到树的重心以后把它当为根然后再重新进行

这道题所到达长度为$k$的道路有$2$种情况

一种情况是经过根$root$,$x$到$y$的距离为$dis[x]+dis[y](lca(x,y)=root)$

而还有一种是经过子树的,就去进行分治即可

然后就没有了

如果是暴力方法的时间复杂度为:$O(floor \times n)$ $floor$为树的层数

如果是点分治的话,因为每次是树的重心所以层数不超过$\log n$,所以时间复杂度为:$O(n\log n)$

#include
#include
#include
#include
#include
using namespace std;inline int read(){ int f=1,ans=0;char c=getchar(); while(c<'0'||c>'9'){
if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9'){ans=ans*10+c-'0';c=getchar();} return f*ans;}const int MAXN=10001;const int MAXN1=10000001;int n,q;struct node{ int u,v,w,nex;}x[MAXN<<1];int cnt,head[MAXN],vis[MAXN],root,sum[MAXN],maxnson[MAXN],sigma,maxn=INT_MAX,query[MAXN],rem[MAXN];void add(int u,int v,int w){ x[cnt].u=u,x[cnt].v=v,x[cnt].w=w,x[cnt].nex=head[u],head[u]=cnt++;}void get(int xx,int fath){ sum[xx]=1; for(int i=head[xx];i!=-1;i=x[i].nex){ if(x[i].v==fath) continue; if(vis[x[i].v]) continue; get(x[i].v,xx); maxnson[xx]=max(maxnson[xx],maxnson[x[i].v]); sum[xx]+=sum[x[i].v]; } int pd=max(maxnson[xx],sigma-sum[xx]); if(pd
=rem[z]) pd[j]|=num_dis[query[j]-rem[z]]; for(int j=1;j<=rem[0];j++) que[++que[0]]=rem[j],num_dis[rem[j]]=1; } for(int i=1;i<=que[0];i++) num_dis[que[i]]=0;}void solve(int xx,int fath){ vis[xx]=1,num_dis[0]=1;calc(xx,fath); for(int i=head[xx];i!=-1;i=x[i].nex){ if(x[i].v==fath) continue; if(vis[x[i].v]) continue; sigma--; get(x[i].v,xx); solve(x[i].v,xx); }}int main(){ memset(head,-1,sizeof(head)); n=read(),q=read(); for(int i=1;i
View Code

 

转载于:https://www.cnblogs.com/si-rui-yang/p/10048592.html

你可能感兴趣的文章
修改文字位置代码
查看>>
2017angular、vue、react热度
查看>>
读后感for《一个程序员的生命周期》
查看>>
linux 更新配置文件命令——source ~/.bashrc
查看>>
Object-C @synthesize -- 笔记
查看>>
关于13,14号没来的声明。
查看>>
2018.12.13 Missing artifact net.sf.json-lib:json-lib:jar:2.4 错误
查看>>
00.环境搭建
查看>>
xPath用法
查看>>
拓扑线性空间与算子谱理论
查看>>
《中国智慧》
查看>>
文章根据时间段显示的微信名和微信号2.0版
查看>>
python3 获取header和data
查看>>
Spring Cloud Feign Client 实现MultipartFile上传文件功能
查看>>
课堂笔记2
查看>>
秒懂算法1——冒泡排序,及一种小改进(C#实现)
查看>>
asp.net WebPages 网页添加默认命名空间
查看>>
酷暑日记实习生篇
查看>>
svg 日常操作
查看>>
Linux下出现command not found的解决办法
查看>>