题目大意:

对1到n求题目中描述的那个式子。

题目分析:

幂不好处理,转化为斯特林数。

根据$ n^k= \sum_ { i=0 }^k S(k,i)×i!×C(n,i) $。

我们可以将问题转化为对每个u和$ j=1 \sim k $求$ \sum_ { i=1 }^n \binom{dist(u,i)}{j} $。 通过杨辉三角向子树做一遍树形DP,再向父亲做一遍树形DP即可。

代码:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int mod = ;
  5.  
  6. int n,k;
  7.  
  8. int S[][];
  9. int f[][];
  10. int fac[];
  11. vector <int> g[];
  12.  
  13. void init(){
  14. memset(f,,sizeof(f));
  15. }
  16.  
  17. void read(){
  18. scanf("%d%d",&n,&k);
  19. for(int i=;i<=n;i++) g[i].clear();
  20. for(int i=;i<n;i++){
  21. int u,v; scanf("%d%d",&u,&v);
  22. g[u].push_back(v); g[v].push_back(u);
  23. }
  24. }
  25.  
  26. void dfs1(int now,int fa){
  27. for(int i=;i<g[now].size();i++){
  28. if(g[now][i] == fa) continue;
  29. dfs1(g[now][i],now);
  30. f[now][] += f[g[now][i]][];
  31. f[now][] %= mod;
  32. for(int j=;j<=k;j++){
  33. f[now][j] += f[g[now][i]][j] + f[g[now][i]][j-];
  34. f[now][j] %= mod;
  35. }
  36. }
  37. f[now][] ++;
  38. }
  39.  
  40. void dfs2(int now,int fa){
  41. for(int i=;i<g[now].size();i++){
  42. if(g[now][i] == fa) continue;
  43. for(int j=k;j>=;j--){
  44. int p = f[now][j]-f[g[now][i]][j]-f[g[now][i]][j-];
  45. p = ((p%mod)+mod)%mod;
  46. int q=f[now][j-]-f[g[now][i]][j-]-(j->=?f[g[now][i]][j-]:);
  47. q = ((q%mod)+mod)%mod;
  48. f[g[now][i]][j] += p+q;
  49. f[g[now][i]][j] %= mod;
  50. }
  51. f[g[now][i]][] += f[now][] - f[g[now][i]][];
  52. f[g[now][i]][] %= mod;
  53. dfs2(g[now][i],now);
  54. }
  55. }
  56.  
  57. void work(){
  58. dfs1(,);
  59. dfs2(,);
  60. for(int i=;i<=n;i++){
  61. int ans = ;
  62. for(int j=;j<=k;j++){
  63. int nowans = (((fac[j]*f[i][j])%mod)*S[k][j])%mod;
  64. ans += nowans; ans %= mod;
  65. }
  66. printf("%d\n",ans);
  67. }
  68. }
  69.  
  70. int main(){
  71. int t; scanf("%d",&t);
  72. fac[] = ;
  73. for(int i=;i<=;i++) S[i][] = ,fac[i] = (fac[i-]*i)%mod;
  74. for(int i=;i<=;i++){
  75. for(int j=;j<=i;j++) S[i][j] = (S[i-][j-]+j*S[i-][j])%mod;
  76. }
  77. while(t--){
  78. init();
  79. read();
  80. work();
  81. }
  82. return ;
  83. }

HDU4625 JZPTREE 【树形DP】【第二类斯特林数】的更多相关文章

  1. BZOJ 2159: Crash 的文明世界(树形dp+第二类斯特林数+组合数)

    题意 给定一棵 \(n\) 个点的树和一个常数 \(k\) , 对于每个 \(i\) , 求 \[\displaystyle S(i) = \sum _{j=1} ^ {n} \mathrm{dist ...

  2. 【bzoj2159】Crash 的文明世界(树形dp+第二类斯特林数)

    传送门 题意: 给出一颗\(n\)个结点的树,对于每个结点输出其答案,每个结点的答案为\(ans_x=\sum_{i=1}^ndis(x,i)^k\). 思路: 我们对于每个结点将其答案展开: \[ ...

  3. 【hdu4045】Machine scheduling(dp+第二类斯特林数)

    传送门 题意: 从\(n\)个人中选\(r\)个出来,但每两个人的标号不能少于\(k\). 再将\(r\)个人分为不超过\(m\)个集合. 问有多少种方案. 思路: 直接\(dp\)预处理出从\(n\ ...

  4. bzoj 2159 Crash 的文明世界 && hdu 4625 JZPTREE ——第二类斯特林数+树形DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2159 学习材料:https://blog.csdn.net/litble/article/d ...

  5. HDU - 4625 JZPTREE(第二类斯特林数+树DP)

    https://vjudge.net/problem/HDU-4625 题意 给出一颗树,边权为1,对于每个结点u,求sigma(dist(u,v)^k). 分析 贴个官方题解 n^k并不好转移,于是 ...

  6. P4827 [国家集训队] Crash 的文明世界(第二类斯特林数+树形dp)

    传送门 对于点\(u\),所求为\[\sum_{i=1}^ndis(i,u)^k\] 把后面那堆东西化成第二类斯特林数,有\[\sum_{i=1}^n\sum_{j=0}^kS(k,j)\times ...

  7. BZOJ 2159: Crash 的文明世界(组合数学+第二类斯特林数+树形dp)

    传送门 解题思路 比较有意思的一道数学题.首先\(n*k^2\)的做法比较好想,就是维护一个\(x^i\)这种东西,然后转移的时候用二项式定理拆开转移.然后有一个比较有意思的结论就是把求\(x^i\) ...

  8. Codeforces Round #100 E. New Year Garland (第二类斯特林数+dp)

    题目链接: http://codeforces.com/problemset/problem/140/E 题意: 圣诞树上挂彩球,要求从上到下挂\(n\)层彩球.已知有\(m\)种颜色的球,球的数量不 ...

  9. 国家集训队 Crash 的文明世界(第二类斯特林数+换根dp)

    题意 ​ 题目链接:https://www.luogu.org/problem/P4827 ​ 给定一棵 \(n\) 个节点的树和一个常数 \(k\) ,对于树上的每一个节点 \(i\) ,求出 \( ...

  10. 【BZOJ2159】Crash的文明世界(第二类斯特林数,动态规划)

    [BZOJ2159]Crash的文明世界(第二类斯特林数,动态规划) 题面 BZOJ 洛谷 题解 看到\(k\)次方的式子就可以往二项式的展开上面考,但是显然这样子的复杂度会有一个\(O(k^2)\) ...

随机推荐

  1. iOS开发简记(4):录音AVAudioRecorder

    录音,声音的采集,一般有两种实现办法,一是使用AVAudioRecorder,一是使用AudioUnit.如果只是简单的录音,使用AVAudioRecorder就可以了,如果想更灵活地处理刚录到的声音 ...

  2. 朱晔的互联网架构实践心得S2E1:业务代码究竟难不难写?

    注意,这是我的架构实践心得的第二季的系列文章,第一季有10篇你也可以回顾. 见https://www.cnblogs.com/lovecindywang/category/1296779.html 最 ...

  3. SSH(poderosa)を使って、さくらのMySQLサーバーに接続する方法

    SSH(poderosa)を使って.さくらのMySQLサーバーに接続する方法の覚書. 現在のさくらサーバーでは.新規ユーザーはTELNETが使えない.なので.データベースをコマンドラインで操作するには ...

  4. JSF生存指南P1

    这是OO的第三次博客作业,也是JSFO(面向JSF编程)的第一次博客作业.暗示了我们面向对象课程已经再向JSF的编写过渡. 不知不觉OO的作业已经写完3/4,那些熬夜赶作业的日子仍然历历在目,仿佛是昨 ...

  5. Django之用户上传文件的参数配置

    Django之用户上传文件的参数配置 models.py文件 class Xxoo(models.Model): title = models.CharField(max_length=128) # ...

  6. laravel belongsTo使用

    前提:订单表(order)和用户表(user) 表结构: order CREATE TABLE `order` ( `id` char(16) COLLATE utf8mb4_unicode_ci N ...

  7. vue.js 添加 fastclick的支持

    fastclick:处理移动端click事件300毫秒延迟 1.兼容性 iOS 3及更高版本的移动Safari iOS 5及更高版本的Chrome Android上的Chrome(ICS) Opera ...

  8. 图解Python的直接赋值与浅拷贝和深度拷贝三者区别

    直接赋值:其实就是对象的引用(别名). 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象. 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象 ...

  9. Django--ORM 多表查询

    一 . 建立外键 一对一建立外键 外键名称 = models.OneToOneField(to='要连接的类名', to_field='字段') 一对多建立外键 外键名称 = models.Forei ...

  10. WorldCount代码检查与优化——软件测试第三次作业

    合作者:201631062222,201631062232 代码地址:https://gitee.com/biubiubiuLYQ/ceshi_secend 本次作业链接地址:https://edu. ...