传送门

##解题思路
  首先给出的树形态没用,因为除根结点外每个点只有一个父亲,它只需要保证和父亲颜色不同即可。设$f(k)$表示至多染了$k$种颜色的方案,那么$f(k)=(k-1)^{(n-1)}*k$,而我们要求的是恰好染$k$种颜色的方案数,设其为$g(k)$,易得

\[
g(k)=\sum\limits_{i=1}^k\dbinom{k}{i}f(i)
\]

发现这个可以二项式反演

\[
g(k)=\sum\limits_{i=1}^k(-1)^{k-i}\dbinom{n}{i}f(i)
\]

然后就可以直接算了。

##代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm> using namespace std;
const int N=2505;
const int MOD=1e9+7;
typedef long long LL; inline int rd(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)) f=ch=='-'?0:1,ch=getchar();
while(isdigit(ch)) x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
return f?x:-x;
} int n,k,f[N],ans,fac[N],inv[N]; inline int fast_pow(int x,int y){
int ret=1;
for(;y;y>>=1){
if(y&1) ret=(LL)ret*x%MOD;
x=(LL)x*x%MOD;
}
return ret;
} inline int C(int x,int y){
return (LL)fac[x]*inv[y]%MOD*inv[x-y]%MOD;
} int main(){
n=rd(),k=rd();int x;fac[0]=1;
for(int i=1;i<n;i++) x=rd();
for(int i=1;i<=k;i++) fac[i]=(LL)fac[i-1]*i%MOD;
inv[k]=fast_pow(fac[k],MOD-2);
for(int i=k-1;~i;i--) inv[i]=(LL)inv[i+1]*(i+1)%MOD;
for(int i=2;i<=k;i++) f[i]=(LL)fast_pow(i-1,n-1)*i%MOD;
for(int i=1;i<=k;i++){
if(!((k-i)&1)) ans=ans+(LL)C(k,i)*f[i]%MOD;
else ans=ans+(MOD-(LL)C(k,i)*f[i]%MOD);
ans%=MOD;
}
printf("%d\n",ans);
return 0;
}

最新文章

  1. 从备考PMP到与项目经理同呼吸
  2. ios 关于问题 no matching provisioning profiles found
  3. Emacs 配置文件
  4. leetcode 124. Binary Tree Maximum Path Sum
  5. Codeforces Round #253 (Div. 2) D. Andrey and Problem
  6. 精妙SQL语句 基础
  7. Matlab使用xlsread, xlswrite函数导致excel进程无法终止的问题
  8. javascript基础笔记学习
  9. Android微信朋友圈全文、收起功能
  10. Nginx下完美解决WordPress的伪静态 (wordpress 迁移后 导致 页面404)
  11. tuxedo开发
  12. Salesforce 超大量数据导入优化策略
  13. Cubase独占声卡问题
  14. HDU1029 Ignatius and the Princess IV (水题)
  15. 告诉你们!我是怎么与Linux系统接触的!
  16. socketserver模块实现并发和连接合法性验证
  17. 1,EasyNetQ-链接到RabbitMQ
  18. 为Gem 添加环境设定
  19. 【原】C++11并行计算 &mdash; 数组求和
  20. 使用神经网络识别手写数字Using neural nets to recognize handwritten digits

热门文章

  1. tab切换中的滚动条下拉分页带来的问题
  2. 【LeetCode 96】不同的二叉搜索树
  3. BUUCTF | SQL COURSE 1
  4. tarjan复习笔记
  5. MySQL-5.7填坑
  6. smartGit的使用
  7. 爬虫(二)—— 请求库(二)selenium请求库
  8. fiddler接口知识
  9. 【图像编辑】三款图像编辑软件Photoshop、AffinityPhoto、Gimp非专业简单横向对比
  10. v8引擎的优化