QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#234734#6698. Flipping Gamebronze_REWA 136ms7536kbC++171.5kb2023-11-01 21:25:542023-11-01 21:25:54

Judging History

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

  • [2023-11-01 21:25:54]
  • 评测
  • 测评结果:WA
  • 用时:136ms
  • 内存:7536kb
  • [2023-11-01 21:25:54]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
const int N=1e5+10,mod=998244353;
ll n,m;
string s,st;
ll dp[1050][1050];
ll fac[N+10],invfac[N+10];
ll quick_pow(ll a,ll b){
    if(a==0)return 0;
    ll ans=1;
    while(b){
        if(b&1)ans=ans*a%mod;
        a=a*a%mod;
        b=b>>1;
    }
    return ans%mod;
}
ll inv(ll x){
    return quick_pow(x,mod-2);
}
void init(){
    fac[0]=invfac[0]=1;
    for(int i=1;i<N;i++){
        fac[i]=fac[i-1]*i%mod;
    }
    invfac[N-1]=inv(fac[N-1]);
    for(int i=N-2;i>=1;i--){
        invfac[i]=invfac[i+1]*(i+1)%mod;
    }
}
ll C(ll a,ll b){
    if(b<a)return 0;
    return fac[b]*invfac[b-a]%mod*invfac[a]%mod;
}
void solve(){
    ll k;
    cin>>n>>m>>k;
    cin>>s;
    cin>>st;
    ll cnt=0;
    for(int i=0;i<n;i++){
        if(s[i]!=st[i])cnt++;
    }
    for(int i=0;i<=m;i++){
        for(int j=0;j<=n;j++){
            dp[i][j]=0;
        }
    }
    dp[0][0]=1;
    for(int i=1;i<=m;i++){
        for(int j=0;j<=n;j++){
            for(int u=0;u<=j;u++){
                if(k-u>n-j)continue;
                if(j+k-2*u<0||j+k-2*u>n)continue;
                dp[i][j+k-2*u]+=dp[i-1][j]*C(u,j)%mod*C(k-u,n-j)%mod;
                dp[i][j+k-2*u]%=mod;
            }
        }
    }
    cout<<dp[m][cnt]*inv(C(cnt,n))%mod<<endl;
    return ;
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    int _=1;
    init();
    cin>>_;
    while(_--)
        solve();
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 5884kb

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: -100
Wrong Answer
time: 136ms
memory: 7536kb

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
30969087
0
146585417
546602567
0
0
0
72614411
0
0
0
657964873
0
0
0
-434038101
-32895273
16636231
1
517088831
259008109
0
0
0
0
0
0
990349196
861765262
0
0
398046849
0
134102542
0
0
0
0
0
711253947
411739397
-127459340
0
0
0
0
0
0
0
787640669
0
77531359
486992947
0
0
0
1
0
-976354036
0
0
0...

result:

wrong answer 6th numbers differ - expected: '565123576', found: '30969087'