题目链接

题意

给定一个树,f(r,S)f(r,S)f(r,S) 表示该树以 rrr 为根,节点 VVV 的子集 ∣S∣=k|S|=k∣S∣=k,包含 SSS 的最小子树的大小。求所有 f(r,S)f(r,S)f(r,S)

题解

对每个节点计算贡献。如下图节点 444,产生的贡献为:444 为根,其他节点选 kkk 个,且其祖先为 444;区域 AAA 的节点为根,其他节点选 kkk 个,且其祖先为 444;区域B的节点为根,其他节点选 kkk 个,且其祖先为 444…

如果以 444 为根,其他节点选 kkk 个,且祖先为 444,方案数 tottottot 计算:
C(sz[x]+sz[y],k)−C(sz[x],k)−C(sz[y],k)C(sz[x]+sz[y],k)-C(sz[x],k)-C(sz[y],k)C(sz[x]+sz[y],k)−C(sz[x],k)−C(sz[y],k)
不断对子树进行合并,上面公式的解释:两棵子树中选 kkk 个减两棵子树分别单独选 kkk 个。

而对非自身为根的方案数计算:
tot−(C(n,k)−C(sz[y],k)−C(n−sz[y],k))tot-(C(n,k)-C(sz[y],k)-C(n-sz[y],k))tot−(C(n,k)−C(sz[y],k)−C(n−sz[y],k))
上面合并的逆

代码

#include<bits/stdc++.h>
#define LL long long
#define pb push_back
using namespace std;
const int N=2e5+9,mod=1e9+7;
int n,k;
LL ans;
int sz[N];
LL fac[N],inv[N];
vector<int>e[N];
LL ksm(LL x,LL y)
{LL res=1;while(y){if(y&1) res=res*x%mod;x=x*x%mod; y>>=1;}return res;
}
LL C(int x,int y)
{if(y>x) return 0;if(x==y) return 1;return fac[x]*inv[y]%mod*inv[x-y]%mod;
}
void dfs(int x,int fa)
{sz[x]=1;LL tot=C(1,k);for(int y:e[x]){if(y==fa) continue;dfs(y,x);tot=(tot+C(sz[x]+sz[y],k)-C(sz[x],k)-C(sz[y],k))%mod;sz[x]+=sz[y];}ans=(ans+tot*sz[x]%mod*(n-sz[x])%mod)%mod; //区域A为根的贡献tot=(tot+C(n,k)-C(sz[x],k)-C(n-sz[x],k))%mod;ans=(ans+tot*n%mod)%mod; //x为根的贡献for(int y:e[x]){if(y==fa) continue;LL res=((tot-(C(n,k)-C(sz[y],k)-C(n-sz[y],k)))%mod+mod)%mod;ans=(ans+res*(n-sz[y])%mod*sz[y]%mod)%mod; //孩子为根的贡献}
}
int main()
{ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);cin>>n>>k;for(int i=1,x,y;i<n;i++){cin>>x>>y;e[x].pb(y); e[y].pb(x);}fac[0]=1;for(int i=1;i<=n;i++)fac[i]=fac[i-1]*i%mod,inv[i]=ksm(fac[i],mod-2);dfs(1,0);cout<<(ans%mod+mod)%mod<<"\n";return 0;
}

CodeCraft-22 and Codeforces Round #795 (Div. 2) F. K-Set Tree相关推荐

  1. CodeCraft-22 and Codeforces Round #795 (Div. 2)

    CodeCraft-22 and Codeforces Round #795 (Div. 2) A. Beat The Odds 题意: 给定一个序列a1,a2,-,an,找出要从该序列中移除的最小元 ...

  2. Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...

  3. Codeforces Round #644 (Div. 3) F.Spy-string

    Codeforces Round #644 (Div. 3) F.Spy-string 题目链接 You are given n strings a1,a2,-,an: all of them hav ...

  4. Codeforces Round #849 (Div. 4) F. Range Update Point Query

    Codeforces Round #849 (Div. 4) F. Range Update Point Query 题目大意: 给一串数字,有两个操作: 操作1:将 l − r l-r l−r 的数 ...

  5. Codeforces Round #538 (Div. 2) F. Please, another Queries on Array? 线段树 + 欧拉函数

    传送门 文章目录 题意: 思路: 题意: 给你一个序列aaa,你需要实现两种操作: (1)(1)(1) 将[l,r][l,r][l,r]的aia_iai​都乘rrr. (2)(2)(2) 求ϕ(∏i= ...

  6. Codeforces Round #742 (Div. 2) F. One-Four Overload 构造 + 二分图染色

    传送门 文章目录 题意: 思路: 题意: 给你一个n∗mn*mn∗m的矩形,包含...和XXX,你有两种颜色,你需要给...染色使得每个XXX上下左右相邻的...其两种颜色个数相同,输出一种合法方案. ...

  7. Codeforces Round #740 (Div. 2) F. Top-Notch Insertions 线段树 / 平衡树 + 组合数学

    传送门 文章目录 题意: 思路: 题意: 思路: 考虑最终的序列是什么鸭子的,首先序列肯定单调不降,也就是a1≤a2≤a3≤...≤ana_1\le a_2\le a_3\le ...\le a_na ...

  8. Codeforces Round #585 (Div. 2) F. Radio Stations 2-sat + 神仙建模

    传送门 文章目录 题意: 思路: 题意: 你现在有ppp种电台,有nnn对关系(x,y)(x,y)(x,y)代表xxx电台或yyy电台中至少有一个,mmm对关系(x,y)(x,y)(x,y)代表xxx ...

  9. Codeforces Round #453 (Div. 1) D. Weighting a Tree 构造 + dfs树

    传送门 文章目录 题意: 思路: 题意: 给你一颗nnn个点的图,每个点都有一个点权cic_ici​,要求你给每个边赋一个权值kik_iki​,要求对于每个点与他相连的边的权值之和等于这个点的点权ci ...

最新文章

  1. 14/10/校内测试{天天考,丧心病狂}
  2. shell中的特殊变量
  3. python语言入门p-python初学者怎么入门
  4. Yahoo Programming Contest 2019 F - Pass
  5. POJ 1986 Distance Queries(LCA)
  6. python中赋值,深拷贝,浅拷贝区别
  7. 海报psd素材模板|周年海报,仪式感值得珍藏
  8. python三本经典书籍-Python入门经典书籍有哪些?有这三本就够了
  9. css 百分比 怎么固定正方形_49 张 GIF 图中学习 49 个 CSS 知识点
  10. idea的NoClassDefFoundError的情况
  11. 共享打印机连接报错问题汇总
  12. 如何将产品发布到App Store上?
  13. 什么东西可以提高睡眠质量、这五款助眠好物助你摆脱困扰
  14. 几行代码教你爬取LOL皮肤图片
  15. swagger升级knife4j:一路上升级打怪
  16. MVP(登录判断+xlistview+二维码)
  17. vue+elementui实现非常好看的博客、网站首页,网站模板
  18. 大学三年级(yuan)
  19. ESP32-PICO-D4的串口使用
  20. PLC编程与应用培训课程_PLC系统认知

热门文章

  1. ST/意法STTH6010-Y车规快恢复二极管,原厂渠道ASEMI代理
  2. python 使用pngquant和ImageMagick批处理压缩png/jpg
  3. php 上取整函数是,PHP取整函数:ceil,floor,round,intval的区别详细解析
  4. vscode 优化.vscode/ipch(解决格式化失效以及占用存储空间大的问题)
  5. 微信小程序map地图的使用
  6. [附源码]计算机毕业设计springboot右脑开发教育课程管理系统
  7. jquery选择器大于等于_从零开始学前端 30. JS选择器
  8. Python3,掌握这4个自动化脚本,让工作效率提升200%。
  9. 鸿蒙手机生态办公软件,华为备战鸿蒙系统手机!HMS国内开启测试:打造自主软件生态...
  10. 项目启动 报Failed to load plugin class