QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#89944#1283. Paper-cuttingwangzhe_0477AC ✓85ms125712kbC++235.6kb2023-03-21 20:27:342023-03-21 20:27:35

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-03-21 20:27:35]
  • 评测
  • 测评结果:AC
  • 用时:85ms
  • 内存:125712kb
  • [2023-03-21 20:27:34]
  • 提交

answer

/*
Source: 
    39th Petrozavodsk Programming Camp
    Day 4: Xi Lin Contest 6, Tuesday, August 25, 2020
Problem:
    Paper-cutting
*/
#include <bits/stdc++.h>

using LL = long long;
using ULL = unsigned long long;
using LD = long double;

constexpr ULL E(LD x, int y) {
    while (y--) x *= 10;
    return x;
}
constexpr ULL SIZE(LD x, int y) {return E(x, y) + 5;}

const int inf32 = E(1, 9) + 5;
const LL inf64 = E(1, 18) + 5;
using ULL = unsigned long long;

namespace IO {
    const int MAX_SIZE = 1 << 20;
    class Reader {
    private:
        FILE *file;
        char buff[MAX_SIZE], *p1, *p2;
        int getchar() {
            if (p1 == p2) p2 = (p1 = buff) + fread(buff, 1, MAX_SIZE, file);
            return p1 == p2 ? EOF : *p1++;
        }
    public:
        Reader(FILE *_file) {
            file = _file;
            p1 = p2 = buff;
        }
        Reader(const char* file_dir) {
            file = std::fopen(file_dir, "r");
            p1 = p2 = buff;
        }
        void Read() {}
        template<typename... Args>
        void Read(int &x, Args &...other) {
            int f, ch;
            x = f = 0;
            ch = getchar();
            for (; !isdigit(ch); ch = getchar()) f ^= ch == '-';
            for (; isdigit(ch); ch = getchar()) x = x * 10 + (ch ^ 48);
            if (f) x = -x;
            Read(other...);
        }
        template<typename... Args>
        void Read(long long &x, Args &...other) {
            int f, ch;
            x = f = 0;
            ch = getchar();
            for (; !isdigit(ch); ch = getchar()) f ^= ch == '-';
            for (; isdigit(ch); ch = getchar()) x = x * 10 + (ch ^ 48);
            if (f) x = -x;
            Read(other...);
        }
        template<typename... Args>
        void Read(__int128 &x, Args &...other) {
            int f, ch;
            x = f = 0;
            ch = getchar();
            for (; !isdigit(ch); ch = getchar()) f ^= ch == '-';
            for (; isdigit(ch); ch = getchar()) x = x * 10 + (ch ^ 48);
            if (f) x = -x;
            Read(other...);
        }
        template<typename... Args>
        void Read(double &x, Args &...other) {
            int f, ch;
            x = f = 0;
            ch = getchar();
            for (; !isdigit(ch); ch = getchar()) f ^= ch == '-';
            for (; isdigit(ch); ch = getchar()) x = x * 10 + (ch ^ 48);
            if (ch == '.') {
                double e = 1;
                for (ch = getchar(); isdigit(ch); ch = getchar())
                    x += (ch ^ 48) * (e *= .1);
            }
            if (f) x = -x;
            Read(other...);
        }
        template<typename... Args>
        void Read(char &ch, Args &...other) {
            ch = getchar();
            while (!isgraph(ch)) ch = getchar();
            Read(other...);
        }
        template<typename... Args>
        void Read(std::string &s, Args &...other) {
            char ch;
            s = "";
            ch = getchar();
            for (; !isgraph(ch);) ch = getchar();
            for (; isgraph(ch); ch = getchar()) s += ch;
            Read(other...);
        }
        template<typename... Args>
        void Read(char* s, Args &...other) {
            char ch;
            ch = getchar();
            while (!isgraph(ch)) ch = getchar();
            for (; isgraph(ch); ch = getchar()) *s++ = ch;
            *s = 0;
            Read(other...);
        }
    };
}
IO::Reader reader(stdin);

int n, m, c[SIZE(1, 6)];
std::string s[SIZE(1, 6)];
std::vector<bool> vis[SIZE(1, 6)];
ULL h1[SIZE(1, 6)], h2[SIZE(1, 6)];

void Manacher(ULL h[SIZE(1, 6)], int len, int &l, int &r) {
    int _r = 0, _mid = 0;
    for (int i = 1; i <= len; i++) {
        c[i] = i > _r ? 0 : std::min(_r - i, c[2 * _mid - i]);
        while (i - c[i] > 0 && i + c[i] + 1 <= len && h[i - c[i]] == h[i + c[i] + 1]) c[i]++;
        if (i + c[i] > _r) {
            _r = i + c[i];
            _mid = i;
        }
    }
    l = 1;
    for (int i = 1; i < len; i++)
        if (i - c[i] < l)
            l = i + 1;
    r = len;
    for (int i = len - 1; i >= l; i--)
        if (i + c[i] >= r)
            r = i;
}
int l1, r1, l2, r2;
const int dx[] = {0, 0, -1, 1}, dy[] = {-1, 1, 0, 0};
void Dfs(int x, int y) {
    vis[x][y] = true;
    for (int i = 0; i < 4; i++) {
        int tx = x + dx[i], ty = y + dy[i];
        if (tx < l1 || tx > r1) continue;
        if (ty < l2 || ty > r2) continue;
        if (s[tx - 1][ty - 1] != '0') continue;
        if (vis[tx][ty]) continue;
        Dfs(tx, ty);
    }
}

int main() {
    int data_count;
    scanf("%d", &data_count);
    for (int data = 1; data <= data_count; data++) {
        reader.Read(n, m);
        for (int i = 0; i < n; i++) reader.Read(s[i]);
        for (int i = 0; i <= std::max(n, m) + 1; i++) h1[i] = h2[i] = 0;
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= m; j++) {
                h1[i] = h1[i] * 2 + (s[i - 1][j - 1] == '0');
                h2[j] = h2[j] * 2 + (s[i - 1][j - 1] == '0');
            }
        Manacher(h1, n, l1, r1);
        Manacher(h2, m, l2, r2);
        int ans = 0;
        for (int i = 1; i <= n; i++) vis[i].resize(m + 5);
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= m; j++)
                vis[i][j] = false;
        for (int i = l1; i <= r1; i++)
            for (int j = l2; j <= r2; j++)
                if (s[i - 1][j - 1] == '0' && !vis[i][j])
                    Dfs(i, j), ans++;
        printf("%d\n", ans);
    }
    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 12ms
memory: 73820kb

input:

3
2 5
11001
11001
5 7
1001100
0110011
0101101
0010010
1000000
3 2
11
11
11

output:

1
4
0

result:

ok 3 tokens

Test #2:

score: 0
Accepted
time: 47ms
memory: 75080kb

input:

100000
3 3
010
101
101
4 2
10
10
10
10
4 2
11
00
00
11
7 1
1
0
0
1
1
0
0
6 1
1
0
0
1
1
1
5 2
11
00
00
11
11
10 1
1
0
0
0
0
0
0
0
0
1
9 1
0
0
0
0
0
0
0
0
0
10 1
1
1
1
1
1
1
1
1
1
0
9 1
0
0
0
0
0
0
1
1
0
1 10
0010000100
7 1
0
0
0
0
0
0
0
4 2
00
00
00
00
7 1
0
1
0
0
0
0
1
10 1
1
0
0
0
0
0
0
0
0
1
9 1
1...

output:

3
1
1
1
1
1
1
1
1
1
2
1
1
2
1
1
1
1
2
2
1
1
1
0
1
0
2
1
1
1
1
2
1
0
2
2
2
1
2
1
2
2
1
0
1
1
1
2
1
1
1
1
1
1
2
0
1
1
1
1
1
1
1
1
0
3
2
1
3
1
1
3
1
1
1
2
1
1
1
1
1
3
1
1
2
0
1
1
1
2
2
1
1
1
1
2
2
1
2
2
3
2
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
2
2
2
1
1
5
1
1
1
2
1
1
2
2
2
2
2
1
1
1
2
2
2
1
1
2
2
1
3
1
1
2
1
...

result:

ok 100000 tokens

Test #3:

score: 0
Accepted
time: 41ms
memory: 75108kb

input:

10000
65 1
1
0
1
0
1
1
1
1
1
0
0
1
1
1
0
1
1
0
1
0
1
0
1
0
1
1
1
1
0
1
0
1
1
0
1
0
0
1
0
1
1
0
1
0
0
1
0
1
0
0
1
0
1
0
0
1
0
1
1
0
1
0
0
1
0
81 1
0
0
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
0
0
0
1
0
0
0
0
1
0
1
0
1
0
1
0
1
1
0
1
1
1
0
0
...

output:

17
17
2
4
4
11
2
3
5
4
4
9
8
5
5
6
2
7
5
8
1
3
1
12
3
1
3
9
4
9
1
4
1
5
4
3
9
2
3
4
3
5
7
7
9
10
10
3
4
1
3
13
7
11
11
14
20
4
6
3
5
3
11
5
9
2
4
9
8
10
8
5
6
5
11
7
2
4
3
6
3
4
9
2
7
4
9
5
4
5
1
2
11
2
2
2
15
3
12
3
6
3
3
11
7
4
12
4
17
4
5
5
1
8
25
3
10
4
5
9
1
3
5
2
4
3
13
4
4
8
7
9
9
1
9
3
1
2
8...

result:

ok 10000 tokens

Test #4:

score: 0
Accepted
time: 38ms
memory: 75028kb

input:

1000
977 1
1
1
1
1
1
1
0
0
1
1
0
0
0
1
0
1
1
0
1
0
0
1
0
0
0
0
0
0
0
0
1
1
1
0
1
1
0
1
1
0
0
1
0
1
0
1
1
1
1
1
0
0
1
0
0
0
1
0
0
1
1
1
0
1
0
0
0
1
1
1
0
0
0
0
0
1
0
0
0
1
0
1
0
0
0
1
1
0
0
0
1
0
0
1
0
0
1
1
0
0
0
1
1
0
0
0
1
0
1
0
0
1
0
0
0
1
1
0
1
0
0
0
0
0
0
1
0
1
0
1
0
1
1
1
0
1
0
0
0
1
0
0
1
1
0...

output:

102
167
21
25
74
28
12
62
62
42
22
88
14
77
147
11
47
89
18
48
40
6
44
235
22
130
118
31
19
60
117
42
10
2
99
36
87
9
143
37
73
67
25
12
37
28
13
54
31
90
47
108
12
107
27
18
6
20
3
29
52
89
49
17
30
13
12
41
52
49
19
117
33
10
63
32
65
35
19
16
19
28
64
67
68
34
103
46
31
67
22
41
117
27
113
112
42...

result:

ok 1000 tokens

Test #5:

score: 0
Accepted
time: 30ms
memory: 75492kb

input:

100
8148 1
1
1
1
0
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0...

output:

681
33
1156
568
237
528
311
229
1604
547
872
271
794
491
557
322
241
633
807
304
160
435
636
355
604
95
27
962
160
761
24
23
711
294
356
14
472
207
428
2371
539
1007
201
140
158
352
162
188
437
771
1286
1003
67
560
592
1002
408
238
71
74
359
1736
717
630
462
581
790
745
80
656
562
441
737
838
322
32...

result:

ok 100 tokens

Test #6:

score: 0
Accepted
time: 44ms
memory: 79932kb

input:

10
92831 1
0
1
0
0
0
1
0
0
1
0
1
1
0
1
0
0
1
0
1
1
0
1
1
1
0
1
0
0
0
0
0
0
0
1
0
0
0
0
1
1
1
0
0
1
0
0
1
0
1
0
0
0
0
0
0
1
1
0
0
0
1
1
0
0
0
1
0
0
0
0
1
0
1
0
0
1
1
1
0
1
0
0
1
0
1
0
1
1
0
1
1
1
0
0
0
1
1
0
1
1
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
1
1
1
0
0
0
0
0
0
1
0
0
0
1
0
1
1
1
0
1
0
0
1
0
1
0
1
1
0
1...

output:

5125
5258
4511
3428
198
5218
11694
9294
13007
1583

result:

ok 10 tokens

Test #7:

score: 0
Accepted
time: 43ms
memory: 79856kb

input:

10
53270 1
0
1
1
0
1
1
1
1
0
1
0
0
1
1
1
0
0
0
1
0
1
0
1
1
1
0
0
1
0
1
1
1
1
0
0
1
1
0
1
1
0
1
1
0
0
0
1
0
0
0
1
0
1
1
0
1
1
1
0
0
0
1
0
1
1
0
0
1
0
0
0
1
1
1
1
0
1
1
1
0
1
1
1
0
1
1
1
1
1
0
0
0
1
1
0
1
1
1
1
1
0
0
0
1
1
1
1
1
0
0
1
0
0
0
0
0
0
1
1
0
1
1
0
0
1
1
0
0
1
0
1
1
1
0
0
1
1
1
0
0
1
0
1
1
0...

output:

6730
5017
389
2178
4679
5753
17391
4823
4599
1961

result:

ok 10 tokens

Test #8:

score: 0
Accepted
time: 19ms
memory: 77116kb

input:

1
1000 1000
011010011001011010010110011010011001011001101001011010011001011010010110011010010110100110010110011010011001011010010110011010011001011001101001011010011001011001101001100101101001011001101001011010011001011010010110011010011001011001101001011010011001011010010110011010010110100110010110...

output:

8

result:

ok "8"

Test #9:

score: 0
Accepted
time: 24ms
memory: 76976kb

input:

1
1000 1000
010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010...

output:

41761

result:

ok "41761"

Test #10:

score: 0
Accepted
time: 28ms
memory: 95140kb

input:

1
1 1000000
011010011001011010010110011010011001011001101001011010011001011010010110011010010110100110010110011010011001011010010110011010011001011001101001011010011001011001101001100101101001011001101001011010011001011010010110011010011001011001101001011010011001011010010110011010010110100110010110...

output:

2

result:

ok "2"

Test #11:

score: 0
Accepted
time: 38ms
memory: 95080kb

input:

1
1 1000000
010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010...

output:

196419

result:

ok "196419"

Test #12:

score: 0
Accepted
time: 28ms
memory: 85380kb

input:

1
2 500000
0110100110010110100101100110100110010110011010010110100110010110100101100110100101101001100101100110100110010110100101100110100110010110011010010110100110010110011010011001011010010110011010010110100110010110100101100110100110010110011010010110100110010110100101100110100101101001100101100...

output:

4

result:

ok "4"

Test #13:

score: 0
Accepted
time: 35ms
memory: 85376kb

input:

1
2 500000
0100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100...

output:

242787

result:

ok "242787"

Test #14:

score: 0
Accepted
time: 29ms
memory: 77088kb

input:

1
1000 1000
001110010110101011110111111111111001000011000011000011000010011001000011000011000011000010011001000011000011000011000010011001000011000011000011000010011001000011000011000011000010011001000011000011000011000010011001000011000011000011000010011001000011000011000011000010011001000011000011...

output:

1964

result:

ok "1964"

Test #15:

score: 0
Accepted
time: 31ms
memory: 76852kb

input:

1
1000 1000
110111101111100011000110100110100000111100101011101010010001000101110101000101011101101111011001011100001011001101101101101101101101101000000101101101101101101101101101101101101101101101101000000101101101101101101101101101101101101101101101101000000101101101101101101101101101101101101101...

output:

31620

result:

ok "31620"

Test #16:

score: 0
Accepted
time: 23ms
memory: 76848kb

input:

1
1000 1000
001101100000000000000001100110000000000000000111100000000000000001100110000000000000000111100000000000000001100110000000000000000111100000000000000001100110000000000000000110111101100000000000000001100110000000000000000111100000000000000001100110000000000000000111100000000000000001100110...

output:

15347

result:

ok "15347"

Test #17:

score: 0
Accepted
time: 21ms
memory: 76944kb

input:

1
1000 1000
100100111100100100111100100000010011110010010011110011111100111100100100111100100000010011110010010011110011001111001001001111001000000100111100100100111100111111001111001001001111001000000100111100100100111100100100110010010011110010010011110010000001001111001001001111001111110011110010...

output:

11049

result:

ok "11049"

Test #18:

score: 0
Accepted
time: 33ms
memory: 76900kb

input:

1
1000 1000
110011111111110011111111110011101101110011111111110011111111110011001100111111111100111111111100111011011100111111111100111111111100110111101100111111111100111111111100111011011100111111111100111111111100110011001111111111001111111111001110110111001111111111001111111111001111001111111111...

output:

29274

result:

ok "29274"

Test #19:

score: 0
Accepted
time: 29ms
memory: 85376kb

input:

1
2 500000
1110011110101110101010111000001111010001010011111011100010010101111111100011100100110000110100000011111011001100110111011100101000001001101001010001100000101101100110011100100010001100001000110001011100111101010100000101010010101100100111110010011100101011001011001000110110001100100110110...

output:

110436

result:

ok "110436"

Test #20:

score: 0
Accepted
time: 32ms
memory: 85372kb

input:

1
2 500000
0010101010101111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

output:

74967

result:

ok "74967"

Test #21:

score: 0
Accepted
time: 16ms
memory: 77760kb

input:

1
10 100000
011001110011010111100111000010101101110101100001010100011000100111110100101101011011001000111101001100101100001111101011000111111011001010110101101110111011111011011110010101011010010111010000100001111100111111010100111110011011101001001010000101001100011011010011011100111100011001110011...

output:

4288

result:

ok "4288"

Test #22:

score: 0
Accepted
time: 19ms
memory: 79648kb

input:

1
5 200000
0000011000110110110101000110110111110001000011011110001111111100010101010010111111011010001111001011000111111011101111111110010101011000001111010110001000000010101001100001100100110110101100000010100011110100010001001110100011101100110010111110001111011001010101101110110110011001110111101...

output:

22390

result:

ok "22390"

Test #23:

score: 0
Accepted
time: 34ms
memory: 82080kb

input:

1
3 333333
0011101010011000011110000111111000011110000000011110000111111000011110000000011110000111111000011110000000011110000111111000011110000110110110000111100001111110000111100000000111100001111110000111100000000111100001111110000111100000000111100001111110000111100001100110000111100001111110000...

output:

17650

result:

ok "17650"

Test #24:

score: 0
Accepted
time: 16ms
memory: 77452kb

input:

1
20000 50
01111000010000101101000010110110011011010000101101
10000111101111010010111101001001100100101111010010
10000111101111010010111101001001100100101111010010
10000111101111010010111101001001100100101111010010
01111000010000101101000010110110011011010000101101
1000011110111101001011110100100110...

output:

3184

result:

ok "3184"

Test #25:

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

input:

1
25000 40
0000101100110100001011001101000101011101
0000101100110100001011001101000101011101
1111010011001011110100110010111010100010
1111010011001011110100110010111010100010
0000101100110100001011001101000101011101
0000101100110100001011001101000101011101
0000101100110100001011001101000101011101
11...

output:

23804

result:

ok "23804"

Test #26:

score: 0
Accepted
time: 29ms
memory: 78140kb

input:

1
33333 30
010000011110000001111000000100
010000011110000001111000000100
101111100001111110000111111011
010000011110000001111000000100
101111100001111110000111111011
101111100001111110000111111011
010000011110000001111000000100
101111100001111110000111111011
101111100001111110000111111011
1011111000...

output:

22032

result:

ok "22032"

Test #27:

score: 0
Accepted
time: 25ms
memory: 80012kb

input:

1
100000 10
0000000010
1111111101
1111111101
0000000010
0000000010
1111111101
0000000010
1111111101
1111111101
0000000010
0000000010
0000000010
1111111101
1111111101
0000000010
0000000010
1111111101
1111111101
0000000010
1111111101
1111111101
1111111101
0000000010
1111111101
1111111101
0000000010
11...

output:

29876

result:

ok "29876"

Test #28:

score: 0
Accepted
time: 85ms
memory: 125712kb

input:

1
1000000 1
1
0
0
0
0
0
1
0
1
1
1
1
1
1
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
1
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
0
0
1
...

output:

30793

result:

ok "30793"