传送门

分析

https://blog.csdn.net/forever_shi/article/details/88048528

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
#define int long long
const int mod = 1e9+;
int dp[][],now[],siz[],n,k;
int s[][],p[],res[];
vector<int>v[];
inline void init(){
int i,j;
p[]=;
for(i=;i<=k;i++)p[i]=p[i-]*i%mod;
s[][]=;
for(i=;i<=k;i++)
for(j=;j<=i;j++)
s[i][j]=(s[i-][j-]+s[i-][j]*j%mod)%mod;
}
inline void dfs(int x,int fa){
dp[x][]=;
for(int i=;i<v[x].size();i++){
if(v[x][i]==fa)continue;
dfs(v[x][i],x);
for(int j=;j<=k;j++)now[j]=dp[x][j];
for(int j=;j<=k;j++)dp[x][j]=(dp[x][j]+dp[v[x][i]][j]+dp[v[x][i]][j-])%mod;
dp[x][]=(dp[x][]+dp[v[x][i]][])%mod;
for(int j=;j<=min(k,siz[x]);j++)
for(int t=;t<=min(k-j,siz[v[x][i]]);t++){
dp[x][j+t]=(dp[x][j+t]+now[j]*dp[v[x][i]][t]%mod)%mod;
dp[x][j+t+]=(dp[x][j+t+]+now[j]*dp[v[x][i]][t]%mod)%mod;
res[j+t]=(res[j+t]+now[j]*dp[v[x][i]][t]%mod)%mod;
res[j+t+]=(res[j+t+]+now[j]*dp[v[x][i]][t]%mod)%mod;
}
siz[x]+=siz[v[x][i]]+;
}
}
signed main(){
int i,j,Ans=;
scanf("%lld%lld",&n,&k);
for(i=;i<n;i++){
int x,y;
scanf("%lld%lld",&x,&y);
v[x].push_back(y);
v[y].push_back(x);
}
init();
dfs(,);
for(i=;i<=k;i++)
Ans=(Ans+p[i]*s[k][i]%mod*res[i]%mod)%mod;
cout<<Ans;
return ;
}

1097G Vladislav and a Great Legend的更多相关文章

  1. Codeforces 1097G Vladislav and a Great Legend [树形DP,斯特林数]

    洛谷 Codeforces 这题真是妙的很. 通过看题解,终于知道了\(\sum_n f(n)^k​\)这种东西怎么算. update:经过思考,我对这题有了更深的理解,现将更新内容放在原题解下方. ...

  2. CodeForces 1097G. Vladislav and a Great Legend

    题目简述:给定$n \leq 10^5$个节点的树$T = (V, E)$,令$X \subseteq V$表示一个非空节点集合,定义$f(X)$为包含$X$的最小子树的边数.求 $$ \sum_{\ ...

  3. Codeforces 1097G - Vladislav and a Great Legend(第二类斯特林数+树上背包)

    Codeforces 题目传送门 & 洛谷题目传送门 首先看到这题我的第一反应是:这题跟这题长得好像,不管三七二十一先把 \(k\) 次方展开成斯特林数的形式,\(f(X)^k=\sum\li ...

  4. CF1097G Vladislav and a Great Legend

    传送门 题目大意 一棵$n$个点的树,一个点集$S$的权值定义为把这个点击连成一个联通块的最少边数,求: $$ans=\sum_{S\in U}f(S)^k$$ 题解 这题跟gdoi那道题差不多 先把 ...

  5. Codeforces 1097 G. Vladislav and a Great Legend

    题目链接 一道好题. 题意:给定一棵\(n\)个点的树,求: \[\sum_{S\subseteq \{1,2,\dots,n\}}f(S)^k\] 其中\(f(S)\)代表用树边将点集\(S\)连通 ...

  6. CF1097G Vladislav and a Great Legend 组合、树形背包

    传送门 看到\(k\)次幂求和先用斯特林数拆幂:\(x^k = \sum\limits_{i=1}^k \binom{x}{i}\left\{ \begin{array}{cccc} k \\ i \ ...

  7. 学习总结:斯特林数( Stirling number )

    基本定义 第一类斯特林数:$1 \dots n$的排列中恰好有$k$个环的个数:或是,$n$元置换可分解为$k$个独立的轮换的个数.记作 $$ \begin{bmatrix} n \\ k \end{ ...

  8. Hello 2019 (D~G)

    目录 Codeforces 1097 D.Makoto and a Blackboard(DP 期望) E.Egor and an RPG game(思路 LIS Dilworth定理) F.Alex ...

  9. 『正睿OI 2019SC Day6』

    动态规划 \(dp\)早就已经是经常用到的算法了,于是老师上课主要都在讲题.今天讲的主要是三类\(dp\):树形\(dp\),计数\(dp\),\(dp\)套\(dp\).其中计数\(dp\)是我很不 ...

随机推荐

  1. snmp安装zabbix

    zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题.  zabbix由2部分构成,zabbix server与可选组件zabbix ...

  2. Proxool抛出的警告 was active for 365172 milliseconds and has been removed automaticaly

    WARN cetDB:149 - #0005 was active for 365172 milliseconds and has been removed automaticaly. The Thr ...

  3. LogStation 支持浏览器实时查看日志

    我们在logback 分布式日志汇总中已经将日志输出到了all.logs,LogStation支持浏览器实时查看日志,适合研发和运维彼此独立的场景:研发没有服务器权限,却想看日志实时输出.再配合ngi ...

  4. (转)Inno Setup入门(十七)——Inno Setup类参考(3)

    本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250993 标签(Label)是用来显示文本的主要组件之一,也是窗 ...

  5. appium+python自动化30-list定位(find_elements)

    前言 有时候页面上没有id属性,并且其它的属性不唯一,平常用的比较多的是单数(element)的定位方法,遇到元素属性不唯一,就无法直接定位到了. 于是我们可以通过复数(elements)定位,先定位 ...

  6. GC之九--gc调优

    目标 满足应用的响应时间和吞吐量需求,尽量减少GC对应用的影响 原则 大部分时候都不需要调优GC,只需配置-Xms,-Xmx即可,JVM会自动进行调整 先满足响应时间需求,再满足吞吐量需求 FullG ...

  7. excel打开csv 出现乱码怎么解决

    CSV是逗号分隔值的英文缩写,通常都是纯文本文件.CSV格式是分隔的数据格式,有字段/列分隔的逗号字符和记录/行分隔换行符.通常CSV文件可以用EXCEL正常打开,但是许多人都有这样的经历,使用EXC ...

  8. 【洛谷】P3919 【模板】可持久化线段树(主席树)

    题目 传送门:QWQ 分析 主席树的模板,囤着 代码 #include <bits/stdc++.h> using namespace std; ; ], rs[N*], root[N*] ...

  9. 如何实现查询显示N个工作日有效期内的数据

    功能点分析:要显示N个工作日有效期内的数据,需要考虑: 1. 可以给每条数据增加一个有效期时间字段,查询时只显示有效期之前的数据,如有效期为七天,数据的创建时间是2014-07-21,那七个工作日有效 ...

  10. 查看进程id

    #!/usr/bin/env python # encoding: utf-8  # Date: 2018/6/16 from multiprocessing import Processimport ...