比赛 |
CSP2023-S模拟赛 |
评测结果 |
AAAAAAATATEEEEEEEEEE |
题目名称 |
Maximized Combos |
最终得分 |
40 |
用户昵称 |
在大街上倒立游泳 |
运行时间 |
4.001 s |
代码语言 |
C++ |
内存使用 |
8.41 MiB |
提交时间 |
2023-10-17 21:31:47 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m;
int f[114];
void dfs(int t,int lian,int xian,int maxx,int yong){
if(n-t<m-yong) return;
if(t==n&&yong==m) f[maxx]=(f[maxx]+1)%998244353;
if(yong<m) dfs(t+1,lian+1,1,max(lian,maxx),yong+1);
dfs(t+1,0,0,maxx,yong);
}
int main(){
freopen("combos.in","r",stdin);
freopen("combos.out","w",stdout);
cin>>n>>m;
dfs(0,0,0,0,0);
for(int i=0;i<m;i++) cout<<f[i]<<endl;
return 0;
}
/*给老代码上个坟
#include<bits/stdc++.h>
using namespace std;
int f[102][102][102][3],n,m;
int dfs(int i,int j,int k,bool c){
if(j>i||k>j||j==-1||k==-1) return 0;
if(j==i&&c==0) return 0;
if(i==1) {
return 1;
}
if(f[i][j][k][c]!=-1) return f[i][j][k][c];
if(c) f[i][j][k][c]=dfs(i-1,j-1,k-1,c);
else f[i][j][k][c]=dfs(i-1,j-1,k,0)+dfs(i-1,j,k,1)+dfs(i-1,j,k,0);
//cout<<i<<' '<<j<<' '<<k<<' '<<c<<' '<<f[i][j][k][c]<<endl;
return f[i][j][k][c];
}
int main(){
scanf("%d%d",&n,&m);
memset(f,-1,sizeof(f));
for(int i=0;i<m;i++) printf("%d\n",dfs(n,m,i,0)+dfs(n,m,i,1));
}*/