QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#482683#7900. Gifts from KnowledgeHJRWA 24ms96880kbC++233.0kb2024-07-17 20:39:302024-07-17 20:39:30

Judging History

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

  • [2024-07-17 20:39:30]
  • 评测
  • 测评结果:WA
  • 用时:24ms
  • 内存:96880kb
  • [2024-07-17 20:39:30]
  • 提交

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=1;i<=n;i++){
                cout<<ss[i]<<endl;
            }
            ok++;
        }
        else{
            cout<<1;
            if(cc%10==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: 96880kb

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: 15ms
memory: 96696kb

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: 23ms
memory: 96768kb

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: 96836kb

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:

111111111111
1111111
1111111111
1111111111
111111111
111111111111
111111111111
11111111
111111111
11111
11111
11111111
11111
1111
11111
1111111111
11111
1111111111
111111
111111
11111
1111111
11111111111
111111111
111111
111111111
1111111
111111111
111111111111
11111
111
111111111111111111111111111
...

result:

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