QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#461033#8552. Sticksucup-team4153AC ✓241ms153804kbC++142.7kb2024-07-02 15:21:442024-07-02 15:21:46

Judging History

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

  • [2024-07-02 15:21:46]
  • 评测
  • 测评结果:AC
  • 用时:241ms
  • 内存:153804kb
  • [2024-07-02 15:21:44]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int N=3e3+7;
const int mod=998244353;
int n;
int r0[N],r1[N],c0[N],c1[N];
string s[N];
int f[N][N][2][2];
void add(int &x,int y){
    x+=y;
    if(x>=mod)x-=mod;
}
signed main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>n;
    for(int i=0;i<=n;i++)s[0].push_back('1');
    for(int i=1;i<=n;i++){
        cin>>s[i];
        s[i]="1"+s[i];
    }
    for(int i=0;i<=n;i++){
        r0[i]=c0[i]=n+1;
    }
    f[0][0][0][1]=1;
    for(int i=0;i<=n;i++){
        for(int j=0;j<=n;j++){
            char ch=s[i][j];
            if(j){
                if(ch!='1'){
                    int v=max(0,(min(i,c0[j])-c1[j]));
                    // cout<<i<<" "<<j<<" "<<c0[j]<<" "<<c1[j]<<"\n";
                    add(f[i][j][0][0],1ll*v*f[i][j-1][0][0]%mod);
                    add(f[i][j][0][0],1ll*v*f[i][j-1][0][1]%mod);
                    add(f[i][j][0][0],1ll*v*f[i][j-1][1][0]%mod);
                    add(f[i][j][0][0],1ll*v*f[i][j-1][1][1]%mod);
                }
                if(ch!='0'&&c0[j]==n+1){
                    add(f[i][j][1][0],f[i][j-1][0][0]);
                    add(f[i][j][1][0],f[i][j-1][0][1]);
                    add(f[i][j][1][0],f[i][j-1][1][0]);
                    add(f[i][j][1][0],f[i][j-1][1][1]);
                    // cout<<i<<" "<<j<<" "<<f[i][j][1][0]<<" "<<"\n";
                }
            }
            if(i){
                 if(ch!='1'){
                    int v=max(0,(min(j,r0[i])-r1[i]));
                    // add(f[i][j][0][1],f[i][j-1][0][0]);
                    add(f[i][j][0][1],1ll*v*f[i-1][j][0][1]%mod);
                    // add(f[i][j][0][1],f[i][j-1][1][0]);
                    add(f[i][j][0][1],1ll*v*f[i-1][j][1][1]%mod);
                }
                if(ch!='0'&&r0[i]==n+1){
                    add(f[i][j][1][1],f[i-1][j][0][0]);
                    add(f[i][j][1][1],f[i-1][j][0][1]);
                    // add(f[i][j][1][1],f[i][j-1][1][0]);
                    add(f[i][j][1][1],f[i-1][j][1][1]);
                }
            }
            // cout<<i<<" "<<j<<" "<<f[i][j][0][0]<<" "<<f[i][j][0][1]<<" "<<f[i][j][1][0]<<" "<<f[i][j][1][1]<<"\n";
            if(i||j){
                if(ch=='0'){
                    r0[i]=min(r0[i],j);
                    c0[j]=min(c0[j],i);
                }
                if(ch=='1'){
                    r1[i]=max(r1[i],j);
                    c1[j]=max(c1[j],i);
                    // cout<<i<<" "<<j<<" "<<c1[j]<<"\n";
                }
            }
        }
    }
    int ans=0;
    for(int i=0;i<2;i++){
        for(int j=0;j<2;j++){
            add(ans,f[n][n][i][j]);
        }
    }  
    cout<<ans<<"\n";
    return 0;
}

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

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3604kb

input:

2
??
??

output:

14

result:

ok 1 number(s): "14"

Test #2:

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

input:

5
??1??
?1??0
??0??
???1?
??1??

output:

3144

result:

ok 1 number(s): "3144"

Test #3:

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

input:

10
0000000000
??????????
??????????
??????????
??????????
??????????
??????????
??????????
??????????
??????????

output:

361458985

result:

ok 1 number(s): "361458985"

Test #4:

score: 0
Accepted
time: 146ms
memory: 153312kb

input:

3000
??????????????????????????????????????????????????????????0?????????????????????0??????????????????????????????????????????????????????????????????????????????????????0???????????????????????????????????????????0???????????????????????????????????????????????????????????????????????????????????...

output:

56427841

result:

ok 1 number(s): "56427841"

Test #5:

score: 0
Accepted
time: 122ms
memory: 153468kb

input:

3000
????????????????????????????????????????0??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

145247225

result:

ok 1 number(s): "145247225"

Test #6:

score: 0
Accepted
time: 230ms
memory: 153400kb

input:

3000
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

925248762

result:

ok 1 number(s): "925248762"

Test #7:

score: 0
Accepted
time: 208ms
memory: 153672kb

input:

3000
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

845505610

result:

ok 1 number(s): "845505610"

Test #8:

score: 0
Accepted
time: 225ms
memory: 153328kb

input:

3000
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

123028256

result:

ok 1 number(s): "123028256"

Test #9:

score: 0
Accepted
time: 227ms
memory: 153336kb

input:

3000
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????1???1??????????????????????????????????????????????????????????????????????1????????????????????????????????????????????????????????????????...

output:

242286033

result:

ok 1 number(s): "242286033"

Test #10:

score: 0
Accepted
time: 227ms
memory: 153336kb

input:

3000
??????????????????????????1????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

448817936

result:

ok 1 number(s): "448817936"

Test #11:

score: 0
Accepted
time: 241ms
memory: 153804kb

input:

3000
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

621258555

result:

ok 1 number(s): "621258555"

Test #12:

score: 0
Accepted
time: 204ms
memory: 153384kb

input:

3000
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

552098298

result:

ok 1 number(s): "552098298"

Test #13:

score: 0
Accepted
time: 219ms
memory: 153328kb

input:

3000
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

190431651

result:

ok 1 number(s): "190431651"

Test #14:

score: 0
Accepted
time: 216ms
memory: 153516kb

input:

3000
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

0

result:

ok 1 number(s): "0"

Test #15:

score: 0
Accepted
time: 221ms
memory: 153384kb

input:

3000
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

641634738

result:

ok 1 number(s): "641634738"

Test #16:

score: 0
Accepted
time: 225ms
memory: 153328kb

input:

3000
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

434138343

result:

ok 1 number(s): "434138343"

Test #17:

score: 0
Accepted
time: 232ms
memory: 153392kb

input:

3000
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

70334815

result:

ok 1 number(s): "70334815"

Test #18:

score: 0
Accepted
time: 216ms
memory: 153324kb

input:

3000
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

26692788

result:

ok 1 number(s): "26692788"

Test #19:

score: 0
Accepted
time: 222ms
memory: 153320kb

input:

3000
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

513359183

result:

ok 1 number(s): "513359183"

Test #20:

score: 0
Accepted
time: 219ms
memory: 153396kb

input:

3000
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

144382583

result:

ok 1 number(s): "144382583"

Test #21:

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

input:

1
0

output:

1

result:

ok 1 number(s): "1"

Test #22:

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

input:

1
1

output:

1

result:

ok 1 number(s): "1"

Test #23:

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

input:

2
10
01

output:

0

result:

ok 1 number(s): "0"

Test #24:

score: 0
Accepted
time: 146ms
memory: 153300kb

input:

3000
1???11111??1???1?1?1111?1111??11?11?????11?1?1?1?1?1???111???111???11?1???11?11??1?11???1??111???11??1????1??1?111??1111?1??1?1?1?1111?1??11?111?1?1??11???11?1?1111??11???????1????1???1?1??111?11?1??1111?1111?1????11?11?1??1?1???1????11?1111?1?1?1??1111???1?11?111?1????1?1?11?11???1???????111?1...

output:

354584112

result:

ok 1 number(s): "354584112"

Test #25:

score: 0
Accepted
time: 130ms
memory: 153312kb

input:

3000
111?1111??11??1?1??1???1?????111???1?11111??1?111?1??1?1????11?11111??1??1?11??11????1??11??11?1???1111???1?11?111?11?1???1?11?11?111?11??1???????1?1??11?1111??????1?1??1111????111111111???1?111??1???111???1?11??11?1??1?11??1?1?111?????1??11?1????1???11??1?11?11111?1111??1?1?1?1???1?11111?1?111...

output:

46093564

result:

ok 1 number(s): "46093564"

Test #26:

score: 0
Accepted
time: 98ms
memory: 153464kb

input:

3000
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

output:

1

result:

ok 1 number(s): "1"

Test #27:

score: 0
Accepted
time: 105ms
memory: 153348kb

input:

3000
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

output:

1

result:

ok 1 number(s): "1"

Extra Test:

score: 0
Extra Test Passed