CF1051D Bicolorings 递推
考试T2,随便推一推就好了~
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include <bits/stdc++.h> #define N 1015 #define mod 998244353 #define ll long long #define setIO(s) freopen(s".in","r",stdin) , freopen(s".out","w",stdout) using namespace std; ll f[N][N<<1][2][2]; int main() { // setIO("army"); int i,j,n=2,m,k; scanf ( "%d%d" ,&m,&k); f[1][1][0][0]=1ll; f[1][1][1][1]=1ll; f[1][2][1][0]=1ll; f[1][2][0][1]=1ll; for (i=1;i<m;++i) { for (j=1;j<=k;++j) { (f[i+1][j][0][0]+=(f[i][j][0][0]+f[i][j][0][1]+f[i][j][1][0])%mod)%=mod; (f[i+1][j][1][1]+=(f[i][j][0][1]+f[i][j][1][0]+f[i][j][1][1])%mod)%=mod; (f[i+1][j][0][1]+=f[i][j][0][1])%=mod; (f[i+1][j][1][0]+=f[i][j][1][0])%=mod; (f[i+1][j+1][0][0]+=f[i][j][1][1])%=mod; (f[i+1][j+1][1][1]+=f[i][j][0][0])%=mod; (f[i+1][j+1][0][1]+=(f[i][j][0][0]+f[i][j][1][1])%mod)%=mod; (f[i+1][j+1][1][0]+=(f[i][j][0][0]+f[i][j][1][1])%mod)%=mod; (f[i+1][j+2][0][1]+=f[i][j][1][0])%=mod; (f[i+1][j+2][1][0]+=f[i][j][0][1])%=mod; } } printf ( "%lld\n" ,(f[m][k][0][0]+f[m][k][1][1]+f[m][k][0][1]+f[m][k][1][0])%mod); return 0; } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步