QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#668834#7900. Gifts from KnowledgeCorycle#WA 52ms28664kbC++141.6kb2024-10-23 16:14:512024-10-23 16:14:54

Judging History

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

  • [2024-10-23 16:14:54]
  • 评测
  • 测评结果:WA
  • 用时:52ms
  • 内存:28664kb
  • [2024-10-23 16:14:51]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
vector<char> a[1000006];
int fa[2000006];
int find(int x){return x==fa[x]?x:fa[x]=find(fa[x]);}
void merge(int x,int y){
    x=find(x);y=find(y);
    fa[x]=y;
}
void work(){
    int r,c;
    cin>>r>>c;
    for(int i=1;i<=r;++i){
        a[i].clear();
        a[i].push_back(0);
        for(int j=1;j<=c;++j){
            char ch;
            cin>>ch;
            a[i].push_back(ch);
        }
    }
    for(int i=1;i<=2*r;++i) fa[i]=i;
    for(int i=1;i<=(c+1)/2;++i){
        int j1=0,j2=0,num=0;
        for(int j=1;j<=r;++j) if(a[j][i]=='1'||a[j][c-i+1]=='1') {j1=j;break;}
        if(j1==0) continue;
        for(int j=j1+1;j<=r;++j) if(a[j][i]=='1'||a[j][c-i+1]=='1') {j2=j;break;}
        if(j2==0) continue;
        for(int j=j2+1;j<=r;++j) if(a[j][i]=='1'||a[j][c-i+1]=='1'){
            cout<<"0\n";
            return;
        }
        if(a[j1][i]=='1'&&a[j1][c-i+1]=='1') num+=2;
        else num+=1;
        if(a[j2][i]=='1'&&a[j2][c-i+1]=='1') num+=2;
        else num+=1;
        if(num>2){
            cout<<"0\n";
            return;
        }
        if(a[j1][i]==a[j2][i]){
            merge(j1,j2+r);
            merge(j1+r,j2);
        }
        else{
            merge(j1,j2);
            merge(j1+r,j2+r);
        }
    }
    int ans=0;
    for(int i=1;i<=2*r;++i) if(i==fa[i]) ++ans;
    ans/=2;
    long long as=1;
    for(int i=1;i<=ans;++i) as<<=1,as%=1000000007;
    cout<<as<<"\n";
}
int main(){
    // ios::sync_with_stdio(0);
    int T;
    cin>>T;
    while(T--) work();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

3
3 5
01100
10001
00010
2 1
1
1
2 3
001
001

output:

4
0
2

result:

ok 3 number(s): "4 0 2"

Test #2:

score: 0
Accepted
time: 42ms
memory: 28664kb

input:

15613
10 10
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
15 8
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
1 5
00000
5 9
000000000
000000000
0000...

output:

1024
32768
2
32
32768
128
32
16
16
2
16384
16384
128
128
32768
8192
128
64
16384
2
4
2
4096
16
4096
1024
32768
32768
16384
8
128
2
16
4096
8192
32768
8192
8192
16
16384
16384
256
128
8
256
8
4096
512
2
4
32
32
2
64
512
1024
32768
32768
2
64
16384
16
8192
16
256
16
64
8192
8192
64
1024
2
32768
2
4
51...

result:

ok 15613 numbers

Test #3:

score: -100
Wrong Answer
time: 52ms
memory: 27444kb

input:

15759
9 6
000000
000000
000000
000000
000000
000000
000000
000000
000000
5 15
010000000000000
000000000000000
000000000000000
000100000000000
000100000000000
14 12
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
000000...

output:

512
16
16384
512
1024
4096
32768
4
2
512
512
512
512
8
2
256
16
4096
512
64
16
4096
512
32
32768
8192
32
2048
128
16
4096
64
32768
256
32
16384
8
512
32
2048
8
16
1024
2048
128
64
32
8
512
8
8192
256
8192
32768
2
8
512
512
256
32
2
2048
8192
8
64
8
2
16384
32768
32768
1024
4096
16384
16384
128
256
4...

result:

wrong answer 2380th numbers differ - expected: '0', found: '2'