博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj3522[Poi2014]Hotel*
阅读量:6140 次
发布时间:2019-06-21

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

题意:

在一个树上求三个点两两距离相等的方案数。n≤5000。

题解:

枚举每个点作为中心点,求出每个子树的深度为i的节点大小,则目标是求某个深度的答案和。

设第i个子树在某个深度的节点数为dep[i],令a1[i]=sigma(dep[j],j<=i);则取两个节点的答案a2[i]=dep[i]*a1[i-1],取三个节点的答案为a3[i]=dep[i]*a2[i-1]为所求,故递推求即可。

代码:

1 #include 
2 #include
3 #include
4 #include
5 #define inc(i,j,k) for(int i=j;i<=k;i++) 6 #define maxn 5010 7 #define ll long long 8 using namespace std; 9 10 inline int read(){11 char ch=getchar(); int f=1,x=0;12 while(ch<'0'||ch>'9'){
if(ch=='-')f=-1; ch=getchar();}13 while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();14 return f*x;15 }16 struct e{
int t,n;}es[maxn*2]; int g[maxn],ess;17 void pe(int f,int t){18 es[++ess]=(e){t,g[f]}; g[f]=ess; es[++ess]=(e){f,g[t]}; g[t]=ess;19 }20 int n,dep[maxn]; ll a1[maxn],a2[maxn],a3[maxn],ans;21 void dfs(int x,int fa,int d){22 dep[d]++; for(int i=g[x];i;i=es[i].n)if(es[i].t!=fa)dfs(es[i].t,x,d+1);23 }24 int main(){25 n=read(); inc(i,1,n-1){
int x=read(),y=read(); pe(x,y);}26 inc(i,1,n){27 int tot=0; memset(a1,0,sizeof(a1)); memset(a2,0,sizeof(a2)); memset(a3,0,sizeof(a3));28 for(int j=g[i];j;j=es[j].n){29 memset(dep,0,sizeof(dep)); dfs(es[j].t,i,1); tot++;30 inc(k,1,n){31 if(tot>=3){a3[k]+=a2[k]*dep[k]; a2[k]+=a1[k]*dep[k]; a1[k]+=dep[k];}32 if(tot==2){a2[k]+=a1[k]*dep[k]; a1[k]+=dep[k];}33 if(tot==1)a1[k]+=dep[k];34 }35 }36 inc(j,1,n)ans+=a3[j];37 }38 printf("%lld",ans); return 0;39 }

 

20161104

转载于:https://www.cnblogs.com/YuanZiming/p/6038781.html

你可能感兴趣的文章
JavaScript面向对象编程深入分析(2)
查看>>
linux 编码转换
查看>>
POJ-2287 Tian Ji -- The Horse Racing 贪心规则在动态规划中的应用 Or 纯贪心
查看>>
Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月7日-1月14日)
查看>>
关于C#导出 文本文件
查看>>
使用native 查询时,对特殊字符的处理。
查看>>
maclean liu的oracle学习经历--长篇连载
查看>>
ECSHOP调用指定分类的文章列表
查看>>
分享:动态库的链接和链接选项-L,-rpath-link,-rpath
查看>>
阿里云企业邮箱 在Foxmail 7.0上POP3/IMAP协议设置方法
查看>>
Javascript一些小细节
查看>>
canvas学习总结
查看>>
Javascript的if判断
查看>>
spring cloud gateway 源码解析(3)记录请求参数及返回的json
查看>>
阿里云ECS数据盘格式化与挂载图文教程
查看>>
Flexbox响应式网页布局 - W3Schools视频02
查看>>
【手牵手】搭建前端组件库(二)
查看>>
怎么给视频添加音频或配乐
查看>>
怎么转换音乐格式
查看>>
Leaflet-Develop-Guide
查看>>