题目:http://codeforces.com/problemset/problem/161/D

题意:给你一棵树,问你两点之间的距离正好等于k的有多少个

思路:这个题目的内存限制首先大一倍,他有5*1e5个点,k的范围是<=500,首先暴力n^2肯定不行,这个题其实很容易看出是树形dp

首先k的范围只有500,我们可以开一个dp[1e5][500]的dp数组,代表以这个点为上端点的所有情况,然后最后递归到1点处,dp[1][k]就是答案

#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<string>
#include<vector>
#define maxn 50005
#define mod 1000000007
using namespace std;
typedef long long ll;
vector<int> mp[maxn];
ll n,k,num;
ll q[maxn][505];
void dfs(int x,int f)
{for(int i=0;i<mp[x].size();i++){int u=mp[x][i];if(u==f) continue;dfs(u,x);q[u][0]=1;//每到一个新点,他的孩子到他的距离都是1for(int j=k-1;j>=0;j--){if(q[u][j]){q[u][j+1]=q[u][j+1]+q[u][j];q[u][j]=0;q[x][k]+=q[u][j+1]*q[x][k-j-1];//如果当前点不是上端点,只是两个孩子之间要过度的点}}for(int j=1;j<=k;j++){q[x][j]=q[x][j]+q[u][j]; }}/*printf("%d:",x);for(int i=0;i<=k;i++){printf(" %d",q[x][i]);} printf("\n");*/
}
int main()
{cin>>n>>k;int x,y;for(int i=0;i<n-1;i++){cin>>x>>y;mp[x].push_back(y);mp[y].push_back(x); }dfs(1,-1);/*for(int i=1;i<=n;i++){printf("i:%d",i);for(int j=0;j<=k;j++){printf(" %d",q[i][j]);}printf("\n");}*/cout<<q[1][k];
} 

转载于:https://www.cnblogs.com/Lis-/p/10797932.html

VK Cup 2012 Round 1 D. Distance in Tree (树形dp)相关推荐

  1. 【树形dp】VK Cup 2012 Round 1 D. Distance in Tree

    统计树中长度为K的路径条数. 用f[u][k]表示从u结点的子树中出发,终止于u结点的长度为k的路径条数. 边dp边统计答案.为了防止重复统计,在枚举子节点的时候,先将该子节点和当前u结点(和前面已经 ...

  2. VK Cup 2012 Qualification Round 2 C. String Manipulation 1.0 字符串模拟

    C. String Manipulation 1.0 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 codeforces.com/problemset/pr ...

  3. VK Cup 2012 Qualification Round 2 C. String Manipulation 1.0 线段树 or 树状数组+二分

    http://codeforces.com/problemset/problem/159/C 题意: 给你一个字符串s,给出一个数k,k倍的s串组成新串str.然后给出n个操作,每个操作对应着pi,c ...

  4. VK Cup 2017 - Round 1

    传送门 A. Bear and Friendship Condition(思维or完全图判定) •题意 给你n个人,m个朋友关系 朋友是会传递的,若A B是朋友,A C是朋友,则必须有B C的朋友关系 ...

  5. 【VK Cup 2016 - Round 1 (Div 2 Edition)C】【构造】Bear and Forgotten Tree 3 构造一棵树直径为d且点1的深度为h

    Bear and Forgotten Tree 3 time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  6. Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) B. Little Artem and Grasshopper 模拟题...

    B. Little Artem and Grasshopper 题目连接: http://www.codeforces.com/contest/669/problem/B Description Li ...

  7. Codeforces Round #477 (rated, Div. 2, based on VK Cup 2018 Round 3)

    点击打开A题链接 #include<bits/stdc++.h> using namespace std; const int MAX = 105; int n,s;int h[MAX], ...

  8. Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) A. Bear and Game 水题

    A. Bear and Game 题目连接: http://www.codeforces.com/contest/673/problem/A Description Bear Limak likes ...

  9. VK Cup 2017 - Round 2

    FallDream打的AB都FFT了,只剩一个我打的C,没进前一百,之后看看马拉松复活赛有没机会呗. A. Voltage Keepsake 题目大意:n个东西,每个东西一开始有bi能源,每秒消耗ai ...

最新文章

  1. 熬夜翻译完的PureFTPd配置文件
  2. 最简单的opencv安装方法----利用annaconda安装opencv
  3. android P精简教程,华为EMUI 9.0发布:基于Android P打造 设置项精简10%
  4. java字符串装双精度_Java 将双精度值转换为字符串
  5. Linux中Shell的转义用法笔记
  6. jpa 关系拥有方_JPA:确定关系的归属方
  7. go系列(1)- linux下安装go环境
  8. k8s+jenkins
  9. 最近的任务安排得很混乱
  10. 利用GitHub搭建一个酷炫免费的个人博客
  11. 组件的data属性 (有别于Vue实例的data属性)
  12. 等不到那人,回不到人间——dbGet(四)
  13. [CSharp]用VSS还是TFS呢?
  14. 6. Zend Studio
  15. pl/sql 过程分页显示小案例
  16. WSS3 Elevation of Privilege 替代 用户身份模拟Impersonate 进行权限提升
  17. webservice和jms的区别
  18. 脑电情绪识别的学习过程
  19. document.referrer和history.go(-1)退回上一页区别
  20. 一种获取公网ip地址并发送邮件至指定邮箱的实现方法

热门文章

  1. activiti前端画图转化_用于Activiti前端显示流程图的插件
  2. 月均数据_月均收入15k的数据产品经理=数据+产品经理?
  3. 计算机文化课每个人都要学吗,计算机文化基础课程
  4. python中math函数库矩阵_Python中矩阵库Numpy基本操作详解
  5. php修改ip6地址为ip4,CentOS7 设置静态IPv6/IPv4地址
  6. 将mysql中的数据库表导出和导入
  7. 【牛客网】:数据结构——时间复杂度,算法复杂度
  8. linux下安装opencv4.4.0
  9. 深度学习——NMS(非极大抑制)
  10. 学习了解online hard example mining在线难例挖掘