cf161d 求距离为k的点对(点分治,树形dp)
点分治裸题,但是用树形dp也能做
/*
dp[u][k]表示在u下距离k的点数量
*/
#include<bits/stdc++.h>
using namespace std;
struct Edge{int to,nxt;}edge[];
int head[],tot,n,k;
long long dp[][],ans;
void init(){
memset(head,-,sizeof head);
tot=;
}
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][]++;
for(int i=head[u];i!=-;i=edge[i].nxt){
int v=edge[i].to;
if(v!=pre){
dfs(v,u);
for(int j=;j<k;j++)
dp[u][j+]+=dp[v][j];
}
} for(int i=head[u];i!=-;i=edge[i].nxt){
int v=edge[i].to;
if(v==pre)continue;
for(int j=;j<k;j++){
ans+=dp[v][j]*dp[u][k-j-];//距离v为j的点数*距离u为k-j-1的点数
if(k-j->)ans-=dp[v][j]*dp[v][k-j-];//距离v为j的点数*距离v为k-j-2的点数
}
}
ans+=dp[u][k];
}
int main(){
init();
int u,v;
cin>>n>>k;
for(int i=;i<n;i++){
cin>>u>>v;
addedge(u,v);addedge(v,u);
} dfs(,);
printf("%d\n",ans/);
}
cf161d 求距离为k的点对(点分治,树形dp)的更多相关文章
- 小白月赛13 小A的路径 (矩阵快速幂求距离为k的路径数)
链接:https://ac.nowcoder.com/acm/contest/549/E来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...
- Vijos1144小胖守皇宫【树形DP】
皇宫看守 太平王世子事件后,陆小凤成了皇上特聘的御前一品侍卫.皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步一哨,每个宫殿都要有人全天候看 ...
- POJ1741--Tree (树的点分治) 求树上距离小于等于k的点对数
Tree Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 12276 Accepted: 3886 Description ...
- [Swift]LeetCode863. 二叉树中所有距离为 K 的结点 | All Nodes Distance K in Binary Tree
We are given a binary tree (with root node root), a targetnode, and an integer value K. Return a lis ...
- Leetcode 863. 二叉树中所有距离为 K 的结点
863. 二叉树中所有距离为 K 的结点 显示英文描述 我的提交返回竞赛 用户通过次数39 用户尝试次数59 通过次数39 提交次数174 题目难度Medium 给定一个二叉树(具有根结点 ro ...
- hdu6446 网络赛 Tree and Permutation(树形dp求任意两点距离之和)题解
题意:有一棵n个点的树,点之间用无向边相连.现把这棵树对应一个序列,这个序列任意两点的距离为这两点在树上的距离,显然,这样的序列有n!个,加入这是第i个序列,那么这个序列所提供的贡献值为:第一个点到其 ...
- 距离为K的节点 All Nodes Distance K in Binary Tree
2018-07-26 17:38:37 问题描述: 问题求解: 解法一. 第一种解法是使用Graph + BFS.换言之,就是将二叉树转化为无向图,然后在无向图中使用BFS进行层次遍历即可. 这种解法 ...
- hiho#1449 重复旋律6 求长度为k的串最大次数 后缀自动机
题目传送门 题目大意:求长度为k的串的最大次数,把k从1到length的所有答案全部输出. 思路: 这道题放在$SAM$里就是求长度$k$对应的所有$right$集中最大的大小. 我们以$aabab$ ...
- poj 1741 两点距离小于K(树DP)
http://blog.csdn.net/woshi250hua/article/details/7723400 求两点间距离小于等于k的方案数 理一下思路: 求通过点A与另一点连接符合条件的个数 = ...
随机推荐
- mysql 原理 ~ 索引通说
简介: 来说说索引吧目的:为了加快数据库的数据查找速度,索引应用而生基础知识基本定义 1 遍历 所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次 ...
- mysql案例~关于linux服务器本身的优化问题
简介:mysql服务优化分为 1服务器本身的优化 2mysql本身的性能优化 今天咱们来讨论下服务器本身的优化性能 一 参数的优化简介 1 文件系统的选择 Linux 常用文件系统: ext3, ex ...
- ubuntu14.04安装opencv-python
系统:ubuntu14.04 已安装:python2.7 需求:安装opencv-python 问题:python import cv2报错: 解决: pip install -i https:// ...
- 绕过PALOALTO TRAPS EDR解决方案
0x1 技术点 PaloAlto Traps(EDR解决方案)基于行为封锁和标记许多黑客工具. 0x2 绕过方法 最简单的解决方案就是禁用内置实用程序,即; Cytool.Cytool是一个集成命令行 ...
- Windows PowerShell 入門(7)-関数編2
この連載では.Microsoftが提供している新しいシェル.Windows Power Shellの使い方を解説します.前回に引き続きPowerShellにおける関数の取り扱いとして.変数と関数のスコ ...
- pycharm安装numpy和scipy(window)
win 10,64位,python3.6 用的pycharm,依次点file-settings-project-project interpreter,出现下图,(一般按正常安装流程,Package里 ...
- hibernate框架学习之核心API
ConfigurationSessionFactorySessionTransactionQueryCriteria Configuration Configuration对象用于封装Hibernat ...
- MySQL-mysql 8.0.12安装教程
1.下载zip安装包 去官网下载MySQL8.0 For Windows zip包,下载地址:https://dev.mysql.com/downloads/mysql/ 2.安装 解压zip包到安装 ...
- 关于Mac的rootless问题
由于在OS X 10.11版本添加了rootless,使得root用户在DOS命令下无法操作系统文件并提示无权限. 解决办法: 首先确认升级到最新版本 重新启动电脑,持续按住Command-R直到看见 ...
- LabVIEW将字符串转化为十进制
(1)作用:将ASCII当做成十六进制来表示,并计算这个十六进制数对应的十进制大小 例如:008A本身对应的ASCII码用十六进制表示为为30 30 38 41,但有些协议中将008A当成0x008A ...