QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#261475#6698. Flipping GameAH20AC ✓33ms3836kbC++141.1kb2023-11-22 22:10:242023-11-22 22:10:24

Judging History

你现在查看的是最新测评结果

  • [2023-11-22 22:10:24]
  • 评测
  • 测评结果:AC
  • 用时:33ms
  • 内存:3836kb
  • [2023-11-22 22:10:24]
  • 提交

answer

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int mod = 998244353;
ll dp[105][105],C[105][105];
//dp[i][j]代表执行了i次操作后还有j盏灯是亮着的方案数
char s[105],t[105];
//C[i][j]为预处理的组合数
void solve(){
    int n,k,m,tot = 0;
    cin>>n>>k>>m;
    cin>>s+1;cin>>t+1;
    memset(dp,0,sizeof(dp));
    for(int i=1;i<=n;i++){
        if(s[i]!=t[i]) ++tot;
    }
    dp[0][tot] = 1;
    for(int i=0;i<k;i++){
        for(int j=0;j<=n;j++){
            if(dp[i][j] == 0) continue;
            for(int h=0;h<=m and h<=j;h++){
                //有h次按压到了亮着的灯上面
                dp[i+1][j-h + (m-h)] = (dp[i+1][j-h + (m-h)]+
                        dp[i][j]*C[j][h]%mod*C[n-j][m-h]%mod
                )%mod;
            }
        }
    }
    cout<<dp[k][0]<<'\n';
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int T;cin>>T;
    for(int i=0;i<=100;i++){
        for(int j=0;j<=i;j++){
            if(j==0) C[i][j]=1;
            else C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod;
        }
    }
    while(T--) solve();
    return 0;
}

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3836kb

input:

3
3 2 1
001
100
3 1 2
001
100
3 3 2
001
100

output:

2
1
7

result:

ok 3 number(s): "2 1 7"

Test #2:

score: 0
Accepted
time: 33ms
memory: 3784kb

input:

1000
8 50 2
11111001
01100001
13 4 5
0010011001101
0000001010010
15 58 12
011111110110100
011010000101000
15 30 2
000101100111101
100010100110000
16 99 15
0111011010111101
1000100101011100
7 73 1
0010010
1010111
1 45 1
1
1
15 64 4
111000001000100
111000110011011
13 16 6
0000001101000
0101001010111
5...

output:

0
0
0
0
0
565123576
0
671397628
866048220
0
0
0
934159397
0
0
0
657964873
0
0
0
297620792
518284447
16636231
1
294524820
259008109
0
0
0
0
0
0
990349196
899244686
0
0
497963164
0
49814547
0
0
0
0
0
529815127
411739397
562040211
0
0
0
0
0
0
0
531433326
0
77531359
703399699
0
0
0
1
0
896329183
0
0
0
0...

result:

ok 1000 numbers