QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#681888#6237. 寻宝游戏propane100 ✓91ms8948kbC++201.6kb2024-10-27 12:42:182024-10-27 12:42:18

Judging History

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

  • [2024-10-27 12:42:18]
  • 评测
  • 测评结果:100
  • 用时:91ms
  • 内存:8948kb
  • [2024-10-27 12:42:18]
  • 提交

answer

#include<iostream>
#include<cstring>
#include<vector>
#include<numeric>
#include<algorithm>
using namespace std;
using LL = long long;
const int mod = 1e9 + 7;

int main(){

#ifdef LOCAL
    freopen("data.in", "r", stdin);
    freopen("data.out", "w", stdout);
#endif

    cin.tie(0);
    cout.tie(0);
    ios::sync_with_stdio(0);

    int n, m, q;
    cin >> n >> m >> q;
    vector<string> s(m, string(n, '0'));
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            cin >> s[j][n - 1 - i];
        }
    }
    vector<int> id(m);
    iota(id.begin(), id.end(), 0);
    sort(id.begin(), id.end(), [&](int a, int b){
        return s[a] < s[b];
    });
    vector<int> rk(m);
    for(int i = 0; i < m; i++){
        rk[id[i]] = i;
    }
    vector<int> val(m);
    for(int i = 0; i < m; i++){
        for(auto c : s[i]){
            val[i] = (val[i] * 2 + (c - '0')) % mod;
        }
    }
    int all = 1;
    for(int i = 0; i < n; i++) all = all * 2 % mod;
    while(q--){
        string s;
        cin >> s;
        int mx = 1e9, mn = -1;
        for(int i = 0; i < m; i++){
            if (s[i] == '0'){
                mn = max(mn, rk[i]);
            }
            else{
                mx = min(mx, rk[i]);
            }
        }
        if (mn >= mx) cout << 0 << '\n';
        else if (mn == -1){
            cout << val[id[mx]] << '\n';
        }
        else if (mx > m){
            cout << (all - val[id[mn]] + mod) % mod << '\n';
        }
        else{
            cout << (val[id[mx]] - val[id[mn]] + mod) % mod << '\n';
        } 
    }

}

详细


Pretests


Final Tests

Test #1:

score: 10
Accepted
time: 0ms
memory: 3812kb

input:

20 30 1
010100001010100101010101010111
001111111001111100010111111000
011100111101000011111111111001
010110010011100010110110000111
001001100010011111000001101011
000011101011011010100101110011
001100000111001110100101101110
000101111001100111010111110101
000000111010010011010110110011
1001111000111...

output:

1669

result:

ok 1 number(s): "1669"

Test #2:

score: 10
Accepted
time: 1ms
memory: 3632kb

input:

1000 16 1000
0011100011111111
0011011010111010
0110011110110011
1010011111000011
1001011001100111
1111001101000010
0001000110101101
1100000111101010
1011100111111111
1110100010110001
0111010001101010
0001111111011101
0010111001111111
0000000100010011
0011100111010000
1110110111001001
110100000000100...

output:

546311852
68821743
862357315
435679482
167927461
455884328
455884328
435679482
329191893
68821743
0
455884328
453074185
455884328
435679482
12465940
956544033
210043177
546311852
546311852
546311852
0
167927461
862357315
700228207
329191893
68821743
329191893
329191893
12465940
956544033
700228207
9...

result:

ok 1000 numbers

Test #3:

score: 10
Accepted
time: 1ms
memory: 3632kb

input:

1000 16 1000
0101100010010000
1000111011001101
1101001111111010
1110101100010001
0101100000000101
1010011110111111
0111111110011010
0010110101111100
1010100000111110
1000110000011010
1110010100011111
0001000111110111
1010011110110100
1100010011000100
1111110111100011
0111011101100111
100011111111101...

output:

600117192
628057030
520500655
152386859
0
949829617
949829617
949829617
651886608
0
767563562
567224118
51663599
567224118
504514244
655570883
628057030
653311634
651886608
600117192
655570883
762981745
651886608
0
0
655570883
767563562
520500655
628057030
0
762981745
628057030
655570883
520500655
6...

result:

ok 1000 numbers

Test #4:

score: 10
Accepted
time: 9ms
memory: 4396kb

input:

500 1000 1000
0011010011000100101111101101101101011100000001011001010101111101011100101111100001100000101101010101100100011001011111110011101110010111111100100000001111111100000110000110101010001101000101010000010100111101111011010110101101000110000111010011011001111000100001011010100100011000110110...

output:

714663864
209138641
606477942
0
958723037
691619641
859772532
285889785
537262220
461859766
86481620
0
605081682
62403003
739399055
615880199
111913839
0
641761956
86481620
494137212
587867528
901066820
495226355
700215543
318838879
397386814
795789207
0
0
756057791
452676554
728623746
557436488
244...

result:

ok 1000 numbers

Test #5:

score: 10
Accepted
time: 9ms
memory: 4232kb

input:

500 1000 1000
0001001101001100001110001100001010101111101011011011011100101001010101001111101111100101110011011010111010110100101010111100101110011101000100010000001111111010101110011001011111011110111111100011001010111100101110101101000100110011100101101101010011101111010001000111101111000111000110...

output:

441872489
208921884
203810130
457905314
45281445
459958033
433045769
690543053
73984238
887079939
334794090
0
662961762
0
0
141891093
794074520
111432275
274034870
750374820
693541831
737491733
262585116
180251071
764661580
31792038
570316499
613306508
0
435458357
997008963
903351888
559377819
0
187...

result:

ok 1000 numbers

Test #6:

score: 10
Accepted
time: 6ms
memory: 4132kb

input:

500 1000 1000
0000011100101100010011000011111000111000011010110101100110100011100010000111101100111110110101101110000001101110100101110000011101011000011000110001010110011100101100010100001000011100101100001101110111111100110101000010001110110001011011110110101110101001011111000111000101010010101001...

output:

654245907
294743637
782762565
790835260
0
83164394
502425569
778577661
7867265
625419989
690855182
0
446490678
0
636056215
0
212077492
0
327046796
577348769
482780640
419901865
0
137566488
0
0
962941788
208480332
657297348
920407413
254837290
784077505
0
0
965616959
91005509
251915364
849900033
0
19...

result:

ok 1000 numbers

Test #7:

score: 10
Accepted
time: 9ms
memory: 4432kb

input:

500 1000 1000
0001000110010010011110101001100111101101001010111110101100011110101111010110101000011010100011101101001111100111111000001101011011000110111010110001010000011001100000001011101111111100100111110110101101110101010000011001100110100101101000010000100110111110100000011011000101000101110001...

output:

539317615
286248539
369652647
425325986
397273375
99895194
861779773
0
466122875
943841819
0
767498253
688213683
548559332
967417819
427469802
661679983
170736998
82613009
624971048
172687009
704182737
164405700
856796890
980124190
640011751
524898836
0
502803994
524898836
0
44883507
968928673
71251...

result:

ok 1000 numbers

Test #8:

score: 10
Accepted
time: 78ms
memory: 8664kb

input:

1000 5000 1000
000011110101110100111100100001100001011110100101010000111011110001000101110101100010011000101000100111100101000001100010000100110101110110001111011000001001110000001001000110001001011000111101010011010011100110010001110011110101010001111000001101111100100100001000111100010010000011000...

output:

621147360
931440739
363611112
0
583003560
308763159
707862232
779837890
461161807
897798304
684355400
0
4170902
981889724
0
10107617
153926106
265071337
0
379316227
258858045
6947079
815617695
134667641
289307899
891277029
518548887
338755257
846676827
78941050
456427349
104211396
908622168
26100453...

result:

ok 1000 numbers

Test #9:

score: 10
Accepted
time: 76ms
memory: 8920kb

input:

1000 5000 1000
111111011011101011011100000000010111011000011000011101001101000001111001111101000010101010110010111001111110010001101011010101001001011110110000000001000110100001001100100100000011101110000110011000010000101110000100000101111001111110101000100011000100000110110010000010010111000101110...

output:

400451441
207463336
443021276
303513108
317633292
668164093
0
551069870
820095280
324065518
215153567
0
845657910
336592801
33660198
616685304
974122807
238491686
0
712032641
170037184
259414032
755661998
37270378
405633065
690243906
818119594
357789876
229014319
633381959
263484114
765058189
505486...

result:

ok 1000 numbers

Test #10:

score: 10
Accepted
time: 91ms
memory: 8948kb

input:

1000 5000 1000
001001001011101000010000010000111110001110100101100110101010010000000110010100101101000000001010110110010001000110110001000001001110010100110010101000000111101001011100111100011111001010101011010000011011010111011100110111110010110110100110000101101101000011100101000110011000100010101...

output:

349645569
682232555
131502487
925844186
729216670
56429626
0
0
841372429
0
0
48642371
452626412
133952726
882044283
914905873
8172328
698935486
194048997
0
390582741
0
697142283
56434125
504704923
741770747
13149033
722604458
713443367
0
41482463
104841061
693630856
265842014
879030090
255237097
0
2...

result:

ok 1000 numbers