比赛 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));
}*/