博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[POI2014]HOT-Hotels
阅读量:5463 次
发布时间:2019-06-16

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

因为三个点肯定会有一个中转点,然后从中将一棵无根树转成有根树,然后再通过乘法原理(c2表示两两的乘积,若有第三个数就可以变成3数相乘,就可以乘法原理了)

为什么要搜索每颗子树而不从从自己的根开始搜了

以为这样就有可能不是中转点了

所以这样的话时间复杂的为O(N^2),但是可以使用长链剖分优化为O(N),虽然我不知道怎么用

#include
#include
#include
#include
#include
using namespace std;inline long long read(){ long long f=1,ans=0;char c; 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;}long long c1[10001],c2[10001],n;struct node{ long long u,v,nex;}x[10001];long long cnt=0;long long ans[10001],head[5001],maxn,sum;void add(long long u,long long v){ x[cnt].u=u,x[cnt].v=v,x[cnt].nex=head[u],head[u]=cnt++;}void dfs(long long pos,long long fath,long long anss){ maxn=max(maxn,anss); ans[anss]++; for(long long i=head[pos];i!=-1;i=x[i].nex) { if(x[i].v!=fath) dfs(x[i].v,pos,anss+1); }}int main(){ memset(head,-1,sizeof(head)); n=read(); for(long long i=1;i
View Code

 

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

你可能感兴趣的文章
eclipse下开发一个简单的strom程序
查看>>
MyEclipse快捷键大全
查看>>
net伪静态重写Url
查看>>
Spring和SpringMVC的区别
查看>>
定时器的拓展
查看>>
Java输出文件到本地(输出流)
查看>>
WebService学习记录
查看>>
复习 枚举
查看>>
MATLAB中的运算符和特殊字符说明
查看>>
EX——4 RPG游戏·改 (圣杯战争不完全版)
查看>>
idea创建Maven工程很慢的解决办法
查看>>
工作流引擎activiti入门
查看>>
cowboy rest
查看>>
setChecked方法触发onCheckedChanged监听器问题
查看>>
vim php代码规范
查看>>
numpy次方计算
查看>>
centos7 搭建LNMP
查看>>
Python OOP(1)
查看>>
delphi 数据库中Connection与Query连接数量问题思考
查看>>
JS图像变换效果的实现
查看>>