QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#723378#9536. Athlete Welcome Ceremonyxiaoxiao__WA 23ms229888kbC++203.0kb2024-11-07 22:00:092024-11-07 22:00:10

Judging History

This is the latest submission verdict.

  • [2024-11-07 22:00:10]
  • Judged
  • Verdict: WA
  • Time: 23ms
  • Memory: 229888kb
  • [2024-11-07 22:00:09]
  • Submitted

answer

#include<iostream>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<cmath>
#include<bitset>
#include<cstring>
#include<queue>
#define fi first
#define se second
using namespace std;
using ll=long long;
const ll mod=1e9+7;
typedef pair<int,int>pii;
const int N=310;
ll dp[N][N][N][3];
ll pre[N][N];
//{pos,cnt_a,cnt_b}
//{0,1,2}={a,b,c}
char a[N];
ll mo(ll x){
    return (x%mod+mod)%mod;
}
void Silverwolf(){
    int n,q;
    cin>>n>>q;
    vector<int>cnt(4,0);
    for(int i=1;i<=n;i++){
        cin>>a[i];
        if(a[i]=='a')cnt[0]++;
        else if(a[i]=='b')cnt[1]++;
        else if(a[i]=='c')cnt[2]++;
        else cnt[3]++;
    }
    if(a[1]=='a')dp[1][0][0][0]=1;
    else if(a[1]=='b')dp[1][0][0][1]=1;
    else if(a[1]=='c')dp[1][0][0][2]=1;
    else{
        dp[1][1][0][0]=1;
        dp[1][0][1][1]=1;
        dp[1][0][0][2]=1;
    }
    for(int i=2;i<=n;i++){
        for(int j=0;j<=300;j++){
            for(int k=0;k<=300;k++){
                if(a[i]=='a'){
                    dp[i][j][k][0]=(dp[i-1][j][k][1]+dp[i-1][j][k][2])%mod;
                }else if(a[i]=='b'){
                    dp[i][j][k][1]=(dp[i-1][j][k][0]+dp[i-1][j][k][2])%mod;
                }else if(a[i]=='c'){
                    dp[i][j][k][2]=(dp[i-1][j][k][0]+dp[i-1][j][k][1])%mod;
                }else{
                    if(j)dp[i][j][k][0]=(dp[i-1][j-1][k][1]+dp[i-1][j-1][k][2])%mod;
                    if(k)dp[i][j][k][1]=(dp[i-1][j][k-1][0]+dp[i-1][j][k-1][2])%mod;
                    dp[i][j][k][2]=(dp[i-1][j][k][0]+dp[i-1][j][k][1])%mod;
                }
            }
        }
    }
    for(int i=0;i<=300;i++){
        for(int j=0;j<=300;j++){
            if(j)pre[i][j]=(pre[i][j-1]+dp[n][i][j][0]+dp[n][i][j][1]+dp[n][i][j][2])%mod;
            else pre[i][j]=(dp[n][i][j][0]+dp[n][i][j][1]+dp[n][i][j][2])%mod;
        }
    }
    // for(int i=1;i<=n;i++){
    //     for(int j=0;j<=3;j++){
    //         for(int k=0;k<=3;k++){
    //             cout<<(dp[i][j][k][0]+dp[i][j][k][1]+dp[i][j][k][2])<<' ';
    //         }cout<<'\n';
    //     }cout<<'\n';
    // }
    while(q--){
        int x,y,z;
        cin>>x>>y>>z;
        //x1<=x,y1<=y
        ll ans=0;
        for(int x1=0;x1<=x;x1++){
            int l=cnt[3]-x1-z;
            int r=y;
            //cout<<x1<<' '<<l<<' '<<r<<'\n';
            if(l>r)continue;
            else{
                l--;
                if(l<0)ans=(ans+pre[x1][r])%mod;
                else ans=(ans+pre[x1][r]-pre[x1][l])%mod;
            }
        }
        cout<<ans<<'\n';
    }
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    //int T;cin>>T;while(T--)
    Silverwolf();
    //愿艾利欧三度为你窥见,令你的生命永不停歇,骇入永远成功,游戏永远胜利。
    //游戏就只是为了游戏,仅此而已
    //acm这种东西,三两下搞定就好啦
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

6 3
a?b??c
2 2 2
1 1 1
1 0 2

output:

3
1
1

result:

ok 3 lines

Test #2:

score: 0
Accepted
time: 0ms
memory: 20732kb

input:

6 3
??????
2 2 2
2 3 3
3 3 3

output:

30
72
96

result:

ok 3 lines

Test #3:

score: 0
Accepted
time: 0ms
memory: 7952kb

input:

1 1
?
0 1 1

output:

2

result:

ok single line: '2'

Test #4:

score: 0
Accepted
time: 0ms
memory: 28920kb

input:

10 10
acab?cbaca
0 2 0
1 1 2
4 2 3
1 1 1
3 5 1
0 5 2
2 2 0
1 2 5
4 3 0
1 1 3

output:

0
1
1
1
1
0
1
1
1
1

result:

ok 10 lines

Test #5:

score: 0
Accepted
time: 2ms
memory: 28852kb

input:

10 10
?c?c?cbac?
10 5 1
5 8 7
9 2 6
5 7 1
5 2 6
5 6 5
5 10 3
9 1 10
2 5 9
1 2 9

output:

16
16
11
16
11
16
16
5
11
0

result:

ok 10 lines

Test #6:

score: 0
Accepted
time: 11ms
memory: 117240kb

input:

50 100
?abacbacab?cbcbcb?acabcbabcbcacbababc?caba?acacbca
8 3 8
2 4 8
8 7 3
0 9 2
10 8 7
7 6 5
4 10 2
6 9 3
3 6 6
9 10 8
2 5 8
8 1 0
3 5 0
1 0 6
5 0 8
6 5 5
1 7 9
7 7 10
4 7 5
6 6 4
10 1 2
4 1 7
10 0 8
7 6 3
1 9 1
4 7 2
8 4 0
8 6 1
5 10 4
5 8 2
5 8 4
4 5 9
5 2 1
1 10 9
4 10 1
8 4 3
8 9 9
8 0 1
0 8 0...

output:

8
8
8
0
8
8
6
8
8
8
8
0
0
0
1
8
4
8
8
8
2
4
1
8
1
6
0
2
8
6
8
8
1
4
2
8
8
0
0
8
2
0
8
8
8
4
8
8
8
8
2
0
0
4
8
8
1
8
7
6
7
0
8
8
8
0
4
7
8
4
0
8
0
4
8
8
8
7
8
4
7
2
8
8
8
0
2
2
8
8
8
4
4
0
8
0
8
8
1
1

result:

ok 100 lines

Test #7:

score: 0
Accepted
time: 17ms
memory: 120408kb

input:

50 100
b????????bca?????c?b??ca?acac?b?b???ca?ab???a?a???
35 43 36
12 49 47
7 11 34
38 44 22
42 17 10
49 8 38
18 26 44
6 18 14
28 29 6
48 32 47
29 15 48
1 5 33
24 17 18
10 27 32
19 10 34
2 23 9
14 24 39
46 12 34
9 49 26
21 8 46
43 43 3
31 16 2
8 27 7
24 41 35
17 25 31
0 13 47
24 31 23
33 40 30
36 39...

output:

34272000
31599360
497244
34272000
17637520
12290752
34272000
93044
415832
34272000
34272000
0
34272000
16360704
27933952
0
34272000
33886976
7896832
12290752
718
24
0
34272000
34272000
0
34272000
34272000
34272000
32254720
0
5666944
34256640
34272000
34272000
12290752
30493248
34256640
20630016
0
10...

result:

ok 100 lines

Test #8:

score: 0
Accepted
time: 19ms
memory: 229524kb

input:

100 1000
c?cbababcabacbacbacacbacabcbabababacababcbcab?cbabacbacbcbcacbab?bcabcbcababcacbabacbcb?babcbab?baca
13 11 4
4 17 20
14 5 2
16 14 15
8 12 17
19 5 11
5 17 12
20 7 6
19 10 1
6 5 0
13 1 9
7 17 1
20 4 16
11 12 18
19 2 16
18 1 11
19 16 3
7 1 0
6 9 16
6 9 16
6 20 7
0 16 20
1 2 8
16 5 20
18 14 18
...

output:

16
15
14
16
16
16
16
16
8
2
16
8
16
16
16
16
16
2
16
16
16
0
1
16
16
5
1
5
16
16
16
16
16
15
16
13
16
15
2
16
16
1
8
16
16
16
15
0
16
15
16
16
16
16
8
8
16
16
16
16
16
16
8
16
16
1
8
8
16
16
1
16
1
0
16
2
2
16
7
16
16
8
16
16
16
16
1
16
14
16
16
16
16
5
16
16
14
16
11
16
15
11
2
1
8
16
16
7
16
5
16
...

result:

ok 1000 lines

Test #9:

score: -100
Wrong Answer
time: 23ms
memory: 229888kb

input:

100 1000
?????c??????????????????????????b???a????a?????????????????????????c????????????????????????????????
43 38 20
27 40 32
39 27 33
28 50 43
50 3 46
38 46 14
42 48 10
45 25 28
49 10 49
38 17 42
41 49 22
41 18 44
46 47 25
17 44 35
34 43 22
47 42 32
32 44 40
36 41 24
45 38 45
49 44 18
42 34 32
43...

output:

490475656
143989836
-880338078
-292135540
10104
-780899456
479284703
-235781478
903846231
659694548
-795712944
105920502
-808220503
-817197302
215438611
-61307689
-202418803
-96082587
893995828
287222624
-421304178
95654849
457810426
-290650212
-914038163
-76669513
783007506
111119718
295402274
2415...

result:

wrong answer 3rd lines differ - expected: '119661929', found: '-880338078'