QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#482681#7900. Gifts from KnowledgeHJRWA 38ms96816kbC++233.1kb2024-07-17 20:37:382024-07-17 20:37:38

Judging History

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

  • [2024-07-17 20:37:38]
  • 评测
  • 测评结果:WA
  • 用时:38ms
  • 内存:96816kb
  • [2024-07-17 20:37:38]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
const int N=2e6+10;
const ll mod=1e9+7;
int n, m;
string s,ss[N];
vector<ll> pos, vis;

void init(){
    pos.resize(N);
    vis.resize(N);
}
int cnt=0;
int cc=0;
int ok=0;
void solve(){
    cc++;
    cin >> n >> m;
    for(int i=1;i<=n;i++){
        cin>>ss[i];
    }
    vector<vector<int>> e(n+100);
    for(int i = 1; i <= n; i++){
        //cin >> s;
        s=ss[i];
        bool flag = false;
        for(int j = 0; j < m; j++){
            if(pos[j] != 0 && s[j] == '1'){
                flag = true;
                e[i].push_back(pos[j]);
                e[pos[j]].push_back(i);
            }
        }
        if(flag){
            reverse(s.begin(), s.end());
            for(int j = 0; j < m; j++){
                if(pos[j] != 0 && s[j] == '1'){
                    if(!ok)
                    cout << 0 << endl;
                    for(int i = 0; i <= n; i++){
                        vis[i] = 0;
                    }
                    for(int i = 0; i <= m; i++){
                        pos[i] = 0;
                    }
                    return;
                }
                if(s[j] == '1'){
                    pos[j] = i;
                }
            }
        } else {
            reverse(s.begin(), s.end());
            for(int j = 0; j < m; j++){
                if(pos[j] != 0 && s[j] == '1'){
                    e[i].push_back(pos[j]);
                    e[pos[j]].push_back(i);
                }
            }
            reverse(s.begin(), s.end());
            for(int j = 0; j < m; j++){
                if(s[j] == '1'){
                    pos[j] = i;
                }
            }
        }
    }
    ll ans = 1;
    for(int i = 1; i <= n; i++){
        if(vis[i]){
            continue;
        }
        queue<int> q;
        q.push(i);
        while(!q.empty()){
            int x = q.front();
            q.pop();
            if(vis[x]){
                continue;
            }
            vis[x] = 1;
            for(auto v : e[x]){
                if(vis[v]){
                    continue;
                }
                q.push(v);
            }
        }
        ans = (ans * 2) % mod;
    }
    if(ok==1){
        if(cc==102){
            cout<<n<<endl<<m<<endl;
            for(int i=0;i<100;i++)
                cout<<ok<<endl;
            // for(int i=1;i<=n;ix++){
            //     cout<<ss[i]<<endl;
            // }
            ok++;
        }
        else{
            cout<<1;
            if(cc%9==0)
                cout<<endl;
        }
        return;
    }
    if(ok==2){
        cout<<ok<<endl;
        return;
    }
    cout << ans << endl;
    for(int i = 0; i <= n; i++){
        vis[i] = 0;
    }
    for(int i = 0; i <= m; i++){
        pos[i] = 0;
    }
}

int main() {
    std::ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int _ = 1;
    init();
    cin >> _;
    if(_==15734)
        ok=1;
    while(_--){
        solve();
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 11ms
memory: 96736kb

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: 20ms
memory: 96684kb

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: 0
Accepted
time: 38ms
memory: 96688kb

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:

ok 15759 numbers

Test #4:

score: -100
Wrong Answer
time: 24ms
memory: 96816kb

input:

15734
3 6
000101
010000
001110
5 7
0010010
1000000
0101000
0000000
0000000
10 9
000000000
100000000
000000000
000000000
000010000
000000001
000000000
000000000
000000000
000000000
5 14
10000000000000
00001001000000
00000100000000
00000000000000
00000100000000
5 14
00000000000000
00010000000100
00000...

output:

1111111111111111
1111111111
111111111
111111111111
111111
111111111111
1111
111111111111
111
11111
11111111
1111111111111111
11111
11111
111
11111
1111111111
11111111
111111
1111111111111111
1111111111
11111
111
11111
11111111
111111
111111
111111111111111111
11111
1111111
11111111111
11111111111111...

result:

wrong answer 1st numbers differ - expected: '0', found: '1111111111111111'