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