ABC358
- 一句话题意:给定 和 , 问共有多少个长度为 的字符串,满足第 种英文字母的出现次数不大于 , 不小于 .
- 标签:动态规划,组合数,动态拆分
- 记 表示使用前 种字母,组成长度为 的字符串的方案数,考虑如何从 转移到 .
- 有两点需要注意:
- 这样是直接把新的第 种字母的所有贡献都用组合数算进去了
- 由于 个数中可以连续插空,所以系数是 而不是 .
- 边界是 .
#include<bits/stdc++.h>
#define F(i,l,r) for(int i(l);i<=r;++i)
#define G(i,r,l) for(int i(r);i>=l;--i)
using namespace std;
using ll = long long;
const ll mod = 998244353;
const int N=1e3+105;
int n;
int c[N][N],p[30],f[30][N];
inline void ini(){
F(i,0,n+5) c[i][0]=1;
F(i,1,n+5) F(j,0,i) c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
}
signed main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n;
ini();
F(i,1,26) cin>>p[i];
f[0][0]=1;
F(i,1,26){
F(j,1,n){
F(k,0,min(j,p[i])) {
f[i][j]=(f[i][j]+f[i-1][j-k]*c[j][k])%mod;
}
}
}
int ans=0;
F(i,1,n) ans=(ans+f[26][i])%mod;
cout<<ans;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下