博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cf161d 求距离为k的点对(点分治,树形dp)
阅读量:4604 次
发布时间:2019-06-09

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

点分治裸题,但是用树形dp也能做

/*dp[u][k]表示在u下距离k的点数量 */#include
using namespace std;struct Edge{
int to,nxt;}edge[100005];int head[50005],tot,n,k;long long dp[50005][505],ans;void init(){ memset(head,-1,sizeof head); tot=0;}void addedge(int u,int v){ edge[tot].to=v;edge[tot].nxt=head[u];head[u]=tot++;}void dfs(int u,int pre){ dp[u][0]++; for(int i=head[u];i!=-1;i=edge[i].nxt){ int v=edge[i].to; if(v!=pre){ dfs(v,u); for(int j=0;j
0)ans-=dp[v][j]*dp[v][k-j-2];//距离v为j的点数*距离v为k-j-2的点数 } } ans+=dp[u][k];}int main(){ init(); int u,v; cin>>n>>k; for(int i=1;i
>u>>v; addedge(u,v);addedge(v,u); } dfs(1,0); printf("%d\n",ans/2);}

 

转载于:https://www.cnblogs.com/zsben991126/p/10333323.html

你可能感兴趣的文章
struts2 入门
查看>>
.net 编译原理
查看>>
mean 快速开发和现有技术的对比分析
查看>>
Metro Style app :浏览器扩展
查看>>
linux的kernel是怎样工作的(TI_DM36X_ARM系统)(1)
查看>>
[luogu4310] 绝世好题 (递推)
查看>>
[luogu3203 HNOI2010] 弹飞绵羊 (分块)
查看>>
-Dmaven.multiModuleProjectDirectory system propery is not set.
查看>>
Python2 unichr() 函数
查看>>
Python 字典 copy()方法
查看>>
Minimum Path Sum
查看>>
Remove Duplicates from Sorted Array II
查看>>
常量指针和指针常量巧妙记忆方法[转]
查看>>
python-haproxy作业讲解视频总结
查看>>
批处理文件脚本总结
查看>>
快速排序C++代码
查看>>
mui搜索框 搜索点击事件
查看>>
bzoj 5289: [Hnoi2018]排列
查看>>
joomla处境堪忧
查看>>
Jquery-AJAX
查看>>