题意:n个位置,k种颜色。求有多少种方案使得每种颜色恰出现d的倍数次。

解:d=1就快速幂,n,k很小就DP,记得乘组合数来分配位置。

d = 2 / 3的时候,考虑生成函数。

f(x) = ∑[d | i] / (i!)

然后发现d = 2的时候就是(ex + e-x) / 2,这个东西的k次方可以用二项式定理展开,然后O(klogn)算,log是快速幂。

d = 3的时候用单位根反演,O(k2)枚举系数,同样算。因为我不想学单位根反演就没写...

 #include <bits/stdc++.h>

 typedef long long LL;

 const int N = , MO = ;

 int n, k, d;

 inline int qpow(int a, int b) {
int ans();
while(b) {
if(b & ) {
ans = (LL)ans * a % MO;
}
a = (LL)a * a % MO;
b = b >> ;
}
return ans;
} namespace DP {
int f[][], C[][];
inline void solve() {
f[][] = ;
for(int i = ; i <= ; i++) {
C[i][] = C[i][i] = ;
for(int j = ; j < i; j++) {
C[i][j] = (C[i - ][j] + C[i - ][j - ]) % MO;
}
}
for(int i = ; i < k; i++) {
for(int j = ; j <= n; j++) {
for(int p = ; j + p <= n; p += d) {
(f[i + ][j + p] += (LL)f[i][j] * C[n - j][p] % MO) %= MO;
}
}
}
printf("%d\n", f[k][n]);
return;
}
} namespace D2 { int fac[N], inv[N], invn[N]; inline int C(int n, int m) {
if(n < || m < || n < m) return ;
return (LL)fac[n] * invn[m] % MO * invn[n - m] % MO;
} inline void solve() {
fac[] = inv[] = invn[] = ;
fac[] = inv[] = invn[] = ;
for(int i = ; i <= k; i++) {
fac[i] = (LL)fac[i - ] * i % MO;
inv[i] = (LL)inv[MO % i] * (MO - MO / i) % MO;
invn[i] = (LL)invn[i - ] * inv[i] % MO;
} int ans = ;
for(int i = ; i <= k; i++) {
ans += (LL)C(k, i) * qpow( * i - k, n) % MO;
ans %= MO;
}
int temp = qpow((MO + ) / , k); printf("%lld\n", ((LL)temp * ans % MO + MO) % MO);
return;
}
} int main() { scanf("%d%d%d", &n, &k, &d);
if(d == ) {
printf("%d\n", qpow(k, n));
return ;
}
if(n <= && k <= ) {
DP::solve();
return ;
}
if(d == ) {
D2::solve();
return ;
}
return ;
}

60分代码

最新文章

  1. nginx配置文件重写url不带index.php
  2. Python学习总结2:raw_input() 与 input()
  3. Oracle 表的访问方式(1) ---全表扫描、通过ROWID访问表
  4. Mobile开发之meta篇
  5. linux之SQL语句简明教程---SELECT
  6. 浅谈Notepad++选中行操作+快捷键+使用技巧【超详解】
  7. 团队作业2--需求分析&amp;原型设计
  8. 201521123067《Java程序设计》第1周学习总结
  9. python之迭代器与生成器
  10. Vue Cli 3.x项目如何部署到IIS子站点下
  11. 项目实战03:Keepalived 实现高可用
  12. 时间序列数据库调研之InfluxDB
  13. AdvStringGrid 标题头 加粗的问题
  14. 使用监听器解决路径问题,例如在jsp页面引入js,css的web应用路径
  15. HTML编辑笔记1
  16. hMailServer SSL 配置
  17. 使用jquery.mCustomScrollbar自定义滚动条(2)
  18. linux poi生成excel demo调试附调用代码
  19. JavaScript判断变量是否为数组的方法(Array)
  20. Leetcode 86

热门文章

  1. idea在ssm项目中引入本地的jar
  2. springcloud eureka server 检测 eureka client 状态
  3. pandas中series求交集
  4. GNU 交叉工具链的介绍与使用
  5. C 终端输入 字符123 输出 10进制123
  6. python中logging使用方法
  7. CSIC_716_20191118【常用模块的用法 Json、pickle、collections、openpyxl】
  8. JPA 基本使用
  9. PL/SQL跨库查询数据
  10. 线段树逆序对(偏序)——cf1187D好题!