VK Cup 2012 Round 1 D. Distance in Tree (树形dp)
题目: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)相关推荐
- 【树形dp】VK Cup 2012 Round 1 D. Distance in Tree
统计树中长度为K的路径条数. 用f[u][k]表示从u结点的子树中出发,终止于u结点的长度为k的路径条数. 边dp边统计答案.为了防止重复统计,在枚举子节点的时候,先将该子节点和当前u结点(和前面已经 ...
- 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 ...
- 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 ...
- VK Cup 2017 - Round 1
传送门 A. Bear and Friendship Condition(思维or完全图判定) •题意 给你n个人,m个朋友关系 朋友是会传递的,若A B是朋友,A C是朋友,则必须有B C的朋友关系 ...
- 【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 ...
- 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 ...
- 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], ...
- 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 ...
- VK Cup 2017 - Round 2
FallDream打的AB都FFT了,只剩一个我打的C,没进前一百,之后看看马拉松复活赛有没机会呗. A. Voltage Keepsake 题目大意:n个东西,每个东西一开始有bi能源,每秒消耗ai ...
最新文章
- 熬夜翻译完的PureFTPd配置文件
- 最简单的opencv安装方法----利用annaconda安装opencv
- android P精简教程,华为EMUI 9.0发布:基于Android P打造 设置项精简10%
- java字符串装双精度_Java 将双精度值转换为字符串
- Linux中Shell的转义用法笔记
- jpa 关系拥有方_JPA:确定关系的归属方
- go系列(1)- linux下安装go环境
- k8s+jenkins
- 最近的任务安排得很混乱
- 利用GitHub搭建一个酷炫免费的个人博客
- 组件的data属性 (有别于Vue实例的data属性)
- 等不到那人,回不到人间——dbGet(四)
- [CSharp]用VSS还是TFS呢?
- 6. Zend Studio
- pl/sql 过程分页显示小案例
- WSS3 Elevation of Privilege 替代 用户身份模拟Impersonate 进行权限提升
- webservice和jms的区别
- 脑电情绪识别的学习过程
- document.referrer和history.go(-1)退回上一页区别
- 一种获取公网ip地址并发送邮件至指定邮箱的实现方法
热门文章
- activiti前端画图转化_用于Activiti前端显示流程图的插件
- 月均数据_月均收入15k的数据产品经理=数据+产品经理?
- 计算机文化课每个人都要学吗,计算机文化基础课程
- python中math函数库矩阵_Python中矩阵库Numpy基本操作详解
- php修改ip6地址为ip4,CentOS7 设置静态IPv6/IPv4地址
- 将mysql中的数据库表导出和导入
- 【牛客网】:数据结构——时间复杂度,算法复杂度
- linux下安装opencv4.4.0
- 深度学习——NMS(非极大抑制)
- 学习了解online hard example mining在线难例挖掘