QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#116144#5267. Bricks in the WallSa3tElSefrML 1925ms21208kbC++234.7kb2023-06-28 10:51:542023-06-28 10:52:15

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-06-28 10:52:15]
  • 评测
  • 测评结果:ML
  • 用时:1925ms
  • 内存:21208kb
  • [2023-06-28 10:51:54]
  • 提交

answer

/// Till I Collapse
#pragma GCC optimize("O3")
#pragma GCC optimize ("unroll-loops")
#pragma GCC target("avx,avx2,fma")

#include "bits/stdc++.h"

#include <ext/pb_ds/assoc_container.hpp> // Common file
#include <ext/pb_ds/tree_policy.hpp> // Including tree_order_statistics_node_update

using namespace std;
using namespace __gnu_pbds;

#define pb push_back
#define F first
#define S second
#define f(i, a, b)  for(int i = a; i < b; i++)
#define all(a)  a.begin(),a.end()
#define rall(a) a.rbegin(),a.rend()
#define sz(x) (int)(x).size()
#define mp(x, y) make_pair(x,y)
#define popCnt(x) (__builtin_popcountll(x))
#define int short

using ll = long long;
using ii = pair<int, int>;
using ull = unsigned long long;

const int N = (1 << 20) + 5, LG = 19, MOD = 1e9 + 7, MOD2 = 1e9 + 7;
const long double PI = acos(-1);
const long double EPS = 1e-7;
mt19937_64 mrand(chrono::steady_clock::now().time_since_epoch().count());
const int dx[] = {-1, 1, -1, 1};
const int dy[] = {1, -1, -1, 1};
using ld = long double;
int n, m;
multiset<int> r, c;

struct DSU {
    vector<int> p, sz;

    DSU() {}

    DSU(int n) {
        f(i, 0, n + 1)p.push_back(i), sz.push_back(1);
    }

    int get(int i) { return i == p[i] ? i : p[i] = get(p[i]); }

    bool same(int i, int j) { return get(i) == get(j); }

    int getSize(int i) { return sz[get(i)]; }

    bool mrg(int u, int v) {
        if (!same(u, v)) {
            u = get(u);
            v = get(v);
//            if (sz[u] > sz[v])
//                swap(u, v);
            p[u] = v;
            sz[v] += sz[u];
            return true;
        }
        return false;
    }
};

int max(int a, int b) {
    if (a > b)return a;
    return b;
}

void doWork() {
    r.clear();
    c.clear();
    cin >> n >> m;
    vector<DSU> rDSU(n + 1, DSU(m));
    vector<DSU> cDSU(m + 1, DSU(n));
    auto grid = vector<vector<char>>(n + 1, vector<char>(m + 1));
    f(i, 1, n + 1) rDSU[i] = DSU(m);
    f(i, 1, m + 1) cDSU[i] = DSU(n);
    f(i, 1, n + 1)f(j, 1, m + 1) {
            cin >> grid[i][j];
            if (grid[i][j] == '.') {
                if (grid[i][j - 1] == '.') {
                    rDSU[i].mrg(j, j - 1);
                }
                if (grid[i - 1][j] == '.') {
                    cDSU[j].mrg(i, i - 1);
                }
            }
        }
    f(i, 1, n + 1)f(j, 1, m + 1)if (grid[i][j] == '.') {
                if (rDSU[i].get(j) == j) {
                    r.insert(rDSU[i].getSize(j));
                }
                if (cDSU[j].get(i) == i) {
                    c.insert(cDSU[j].getSize(i));
                }
            }
    int ans = 0;
    r.insert(0);
    r.insert(0);
    c.insert(0);
    c.insert(0);
    ans = max(ans, *(--r.end()) + *(-- --r.end()));
    ans = max(ans, *(--c.end()) + *(-- --c.end()));
    f(i, 1, n + 1)f(j, 1, m + 1) if (grid[i][j] == '.' && rDSU[i].get(j) == j) {
                for (int k = j; k <= m && grid[i][k] == '.'; k++) {
                    int val1 = i - cDSU[k].get(i);
                    int val2 = cDSU[k].getSize(i) - val1 - 1;
                    c.erase(c.find(cDSU[k].getSize(i)));
                    c.insert(val1);
                    c.insert(val2);
                }
                ans = max(ans, rDSU[i].getSize(j) + *(--c.end()));
                for (int k = j; k <= m && grid[i][k] == '.'; k++) {
                    int val1 = i - cDSU[k].get(i);
                    int val2 = cDSU[k].getSize(i) - val1 - 1;
                    c.insert(cDSU[k].getSize(i));
                    c.erase(c.find(val1));
                    c.erase(c.find(val2));
                }
            }
    f(i, 1, n + 1)f(j, 1, m + 1) if (grid[i][j] == '.' && cDSU[j].get(i) == i) {
                for (int k = i; k <= n && grid[k][j] == '.'; k++) {
                    int val1 = j - rDSU[k].get(j);
                    int val2 = rDSU[k].getSize(j) - val1 - 1;
                    r.erase(r.find(rDSU[k].getSize(j)));
                    r.insert(val1);
                    r.insert(val2);
                }
                ans = max(ans, cDSU[j].getSize(i) + *(--r.end()));
                for (int k = i; k <= n && grid[k][j] == '.'; k++) {
                    int val1 = j - rDSU[k].get(j);
                    int val2 = rDSU[k].getSize(j) - val1 - 1;
                    r.insert(rDSU[k].getSize(j));
                    r.erase(r.find(val1));
                    r.erase(r.find(val2));
                }
            }
    cout << ans << '\n';
}


int32_t main() {
#ifdef ONLINE_JUDGE
    ios_base::sync_with_stdio(0);
    cin.tie(0);
#endif // ONLINE_JUDGE
    int t = 1;
    cin >> t;
    while (t--) {
        doWork();
    }
    return 0;
}

详细

Test #1:

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

input:

5
2 2
..
..
4 5
###.#
#....
.##.#
#.#.#
2 1
.
.
2 3
###
#.#
5 4
##.#
..#.
#.#.
....
#.##

output:

4
6
2
1
7

result:

ok 5 number(s): "4 6 2 1 7"

Test #2:

score: 0
Accepted
time: 137ms
memory: 3572kb

input:

10000
1 6
..#..#
5 7
#..##.#
..###.#
.####..
.##.##.
..#.#.#
1 7
#.####.
10 5
##..#
###.#
....#
#.#..
##.##
###.#
#....
##.##
...##
.....
1 2
.#
1 3
##.
7 6
####..
#####.
#...#.
..#..#
..##.#
##.#..
#..##.
5 4
..##
..#.
..##
..#.
##.#
5 6
.##..#
.#....
##.#.#
#..###
##....
1 6
.#.###
1 2
##
5 5
##.....

output:

4
7
2
9
1
1
6
8
8
2
0
6
3
4
4
8
12
4
10
12
8
5
8
3
5
8
1
6
8
4
6
12
7
4
6
2
5
6
3
10
5
5
8
3
4
4
7
8
4
8
6
6
6
4
4
13
3
3
7
7
2
8
3
6
6
4
5
6
11
6
6
6
6
6
9
1
7
7
8
3
7
3
8
10
3
5
4
7
9
5
2
8
6
4
6
2
7
4
2
5
7
10
4
8
8
8
9
8
8
6
2
9
3
9
10
7
4
6
7
8
5
6
7
9
4
8
11
5
6
4
9
2
8
2
3
8
6
7
11
7
6
12
6
1...

result:

ok 10000 numbers

Test #3:

score: 0
Accepted
time: 46ms
memory: 3528kb

input:

10000
1 5
#####
9 5
##..#
##.##
.####
#.###
###.#
..#.#
#####
####.
#####
10 9
.########
#.#######
##.#..###
########.
#######.#
########.
#########
#########
#########
###.#####
5 2
##
##
##
##
.#
3 9
#########
#########
#######.#
8 8
########
.#####.#
########
.#######
#######.
###.#..#
#.######
....

output:

0
4
3
1
1
3
0
0
1
3
2
1
2
3
1
3
3
2
2
2
3
2
3
2
5
0
0
1
1
4
0
2
0
1
3
4
0
2
4
3
2
2
1
2
2
2
2
3
3
2
2
2
1
1
2
2
1
2
4
3
1
1
3
2
5
0
3
3
0
4
4
1
3
0
1
2
1
0
2
1
1
1
2
4
2
0
3
0
2
2
2
2
2
2
1
1
2
2
2
1
3
3
2
2
0
0
2
2
1
1
4
1
2
3
0
2
1
2
0
2
4
3
1
2
0
2
1
3
3
3
1
3
4
3
4
2
0
3
3
5
2
0
0
0
2
6
2
2
2
0
...

result:

ok 10000 numbers

Test #4:

score: 0
Accepted
time: 37ms
memory: 3448kb

input:

10000
9 6
######
######
.#####
######
######
######
######
#####.
######
9 7
#######
#######
#######
#######
#######
#######
#######
#######
#######
2 5
#####
#####
7 5
####.
#####
.####
#####
#####
#####
#####
1 4
####
9 6
######
######
######
######
######
######
######
######
######
10 8
########...

output:

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

result:

ok 10000 numbers

Test #5:

score: 0
Accepted
time: 204ms
memory: 3424kb

input:

10000
5 4
....
....
....
....
....
5 2
..
.#
..
..
..
1 8
...#....
8 10
.#..#...#.
.#........
...#......
..........
#.........
.##.......
..........
..........
2 10
..........
........#.
7 6
......
......
......
......
......
...#..
......
2 2
.#
..
9 1
.
.
.
.
.
.
.
.
.
5 1
.
.
.
.
.
9 5
.....
.......

output:

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

result:

ok 10000 numbers

Test #6:

score: 0
Accepted
time: 111ms
memory: 3548kb

input:

1000
6 16
.##..#.##.######
#.##.###...#..##
##.#####.##.#.##
.##..#.#.#..#...
..#..#.#.#.#....
#.#.#..#.#.#.#.#
8 17
##..#...######.#.
..####.######..#.
###.###.#..#.#.##
..#.#.##..#.#.##.
##.#.#.##.#....##
#..###..#.#.#....
.#.....#...#....#
.#..#.##.##...##.
16 25
.##.###.####.##...#.#####
#..##.#...

output:

9
10
21
9
12
6
13
13
12
7
8
11
9
7
10
8
11
23
10
13
14
14
9
15
17
10
12
13
10
13
12
12
7
10
12
3
14
11
12
13
14
5
14
14
11
14
18
6
12
8
11
15
15
15
10
15
2
12
11
14
9
16
9
17
6
13
6
20
12
2
8
19
16
17
19
13
19
4
18
13
8
11
8
3
13
15
16
15
11
4
11
8
4
11
6
13
16
10
13
16
16
7
13
25
14
20
16
14
3
11
1...

result:

ok 1000 numbers

Test #7:

score: 0
Accepted
time: 139ms
memory: 3528kb

input:

1000
3 185
#...#..##.###.##..#######..##..#.##.##..####.##.......###.##..##.....###.##..#####....######.####.##.###.###.#....###...#.....##.#....#....#..##..#.####.#.##.#.####..#...#####.#.#.##.#.
.#.##.####.#.##..#.#.######....#..##..##..#.#.########.#.##.#.####.#...###......#.#..#.###...#...#.###....

output:

14
5
15
18
12
13
14
10
12
2
14
13
13
12
16
8
13
7
8
14
26
16
11
13
14
11
11
16
14
10
16
14
15
3
16
9
8
16
17
12
11
18
17
4
15
15
10
11
13
2
10
20
6
11
11
7
14
11
13
16
13
14
6
9
15
16
9
15
14
15
11
14
12
16
12
14
8
9
8
16
13
8
11
18
10
13
13
6
13
8
11
10
15
10
15
11
19
6
16
14
9
16
10
16
9
4
15
16
2...

result:

ok 1000 numbers

Test #8:

score: 0
Accepted
time: 143ms
memory: 3528kb

input:

1000
40 2
..
##
.#
..
..
..
..
..
##
.#
..
..
..
..
..
##
#.
#.
.#
..
##
##
..
.#
##
##
##
#.
..
.#
.#
#.
.#
..
##
.#
..
.#
##
#.
19 1
#
.
#
#
#
#
.
#
#
.
#
#
.
#
.
.
#
.
#
24 4
.#..
.##.
#.##
#.##
##..
.###
##.#
##..
#...
#..#
###.
..#.
####
.#.#
.###
#.##
##.#
##.#
.#..
###.
.#.#
....
....
.###
12...

output:

12
3
8
15
16
4
17
12
19
16
16
7
5
18
8
13
7
15
10
18
13
6
16
19
3
8
10
9
14
12
11
12
10
15
17
15
13
11
9
14
1
16
11
14
14
9
17
14
6
10
17
12
17
20
18
15
19
10
17
14
15
6
15
9
13
4
16
12
10
7
10
9
14
12
21
8
15
11
10
9
9
14
15
19
7
5
17
13
10
17
10
10
14
5
18
15
8
11
10
9
17
8
11
9
11
10
12
17
10
10
...

result:

ok 1000 numbers

Test #9:

score: 0
Accepted
time: 103ms
memory: 3832kb

input:

100
2 45
#.###..###.#..#..#...#####.##..#.....##.##.#.
..#..#.#.###.######.#.###...####.#...#.###.##
4 63
.#...####...####.####..#.#...#.###.###...##...#..#.#...##...#..
#.##..##.#.####.#....#.#...########.#.######..##.##.#..###.##..
#..##.#...##.#.#..###..#..#.###.#...........##.#.####..##.#####
.#...

output:

8
16
15
21
22
12
26
19
24
15
21
20
14
19
16
17
1
19
22
18
20
29
18
21
22
16
16
22
27
27
19
24
13
13
18
14
12
15
19
20
18
21
24
20
14
15
17
20
20
22
17
16
26
20
26
20
18
16
23
24
13
18
17
22
18
13
23
23
23
17
17
22
25
16
21
13
13
18
17
16
24
26
17
23
19
6
8
25
20
14
21
21
21
22
15
17
16
15
15
18

result:

ok 100 numbers

Test #10:

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

input:

100
2 72
##.###########.###.############.#########.##########.###########.#######
#...###########.#.##.############.#.######################.##.###.####..
75 58
####.##########.###.#################.#####.##############
#######..###############.######.############.#############
#####################...

output:

5
7
7
6
6
6
6
8
8
6
6
6
6
4
9
6
6
4
7
6
7
7
8
7
6
6
7
4
4
5
4
6
6
7
6
6
6
9
7
4
4
6
4
7
4
6
8
8
6
6
7
7
6
6
6
5
6
6
6
2
7
4
5
8
8
6
7
4
6
2
7
6
7
6
5
6
4
7
3
4
8
6
8
3
6
5
6
4
7
2
6
6
2
4
8
5
4
6
6
3

result:

ok 100 numbers

Test #11:

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

input:

100
43 93
#######################################################################################.#####
#############################################################################################
#############################################################################################
########...

output:

4
3
4
0
3
2
2
3
2
2
2
3
2
4
2
3
2
2
3
4
3
2
2
3
2
3
2
2
2
3
2
2
3
2
2
3
2
2
3
3
2
2
0
0
2
2
2
2
3
0
3
2
3
1
3
2
3
2
2
3
3
4
2
2
3
2
2
2
2
2
2
2
2
2
2
4
2
2
2
3
2
2
2
3
2
2
1
2
2
2
2
2
2
2
0
3
2
2
4
1

result:

ok 100 numbers

Test #12:

score: 0
Accepted
time: 14ms
memory: 4376kb

input:

10
41 499
##########################################.#####################################.#.####.################################.#####.############.#####.######################.#######.###########.######.######################.#.##############################.####.#.#######.###.###########...###.....

output:

9
6
8
9
8
4
8
6
6
6

result:

ok 10 numbers

Test #13:

score: 0
Accepted
time: 93ms
memory: 5596kb

input:

10
41 877
#.##########....##..##.#..###...#...#.###.#.#..#.#.#..##..#..#.##.#.#.##.......#..####..##.#.####.###.##.#...#..#..###...##.#.###.#.#.....###..#.###.#..#....#...#..#.#.##.#.##..#.#.#..##.#...#.#...#.##...###.###.....#.###.#..##.####..###.#.####.###......#....#.##.###.#.###.#..##....####......

output:

28
26
16
27
28
36
21
30
16
23

result:

ok 10 numbers

Test #14:

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

input:

10
859 68
###.##############.##########..#########.##..#...####.##.#.#########
.#.##.#################################################.#######.####
.####.###############..##########.###########.######################
####.#####################.#.##.##.#########.##############.########
########.#####...

output:

8
8
10
6
7
10
7
6
10
9

result:

ok 10 numbers

Test #15:

score: 0
Accepted
time: 129ms
memory: 6572kb

input:

10
963 50
###.##...#....#..#..#...#.##..#.###...#.#..###...#
...####...#..#.##.#..#....###.#.#.##....#.#.##.#..
#....#.#......#######.##.###.###..###.#.#....##..#
.####....#####..#.#.#.#.###.##.#....#...#..###.##.
##..##...#...#.#..#....#.#.#.#.#.##..#.#.#..#..##.
.####.###.....#......####..##.........

output:

27
16
22
20
24
22
18
27
28
31

result:

ok 10 numbers

Test #16:

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

input:

10
23 107
#.####.####.###########..#############.####.#############################.#######.#######.########.########
####.###################.#######.##################.#####.###################.#.###########################
#######.##.#############################...##############.###########.###....

output:

84
173
187
212
57
46
172
39
8
18

result:

ok 10 numbers

Test #17:

score: 0
Accepted
time: 149ms
memory: 6268kb

input:

10
55 78
...#.##.#####....##.##.#...#.#...###.###..#..#.##..##...####.....#.##.#....#.#
.###.#..#.#.#####.#..######....#...#...#..###..#.######..####.##.#..##...#...#
.####...#.##.....#.#.#..#...###.#........##....####.##.##.#..###..##.####....#
#......##.#.......#..##.#.###..#.#......###.#..#..#.##...

output:

91
215
209
239
115
44
140
166
301
446

result:

ok 10 numbers

Test #18:

score: 0
Accepted
time: 145ms
memory: 5832kb

input:

10
3 2515
#..##..#..#..#..#...##...###...###.##..#..###.##..##.##.#.######..##.##..##.###.#....................................................................................................................................................................................................................

output:

4942
402
12899
15672
5915
2113
15630
15104
778
306

result:

ok 10 numbers

Test #19:

score: 0
Accepted
time: 222ms
memory: 6328kb

input:

10
9644 5
##...
####.
#..##
##..#
#...#
.#.#.
..#..
.#..#
#.#.#
..##.
#...#
.#.#.
#..#.
#..#.
##...
.###.
#.##.
##.#.
.#...
###..
####.
.....
.##..
#.##.
.##..
.....
.###.
..#..
...#.
#.#..
...#.
##.#.
...#.
...#.
##...
.###.
.....
.#.#.
.#...
..##.
##.#.
#..#.
###..
#....
#....
#.#..
..#..
##...
.....

output:

18955
9043
17912
8479
12922
14983
15186
15888
15222
6580

result:

ok 10 numbers

Test #20:

score: 0
Accepted
time: 285ms
memory: 5960kb

input:

10
9485 6
......
..#..#
......
##....
......
..##..
.....#
...#..
....#.
...#..
......
....#.
......
......
......
.#....
......
.#.#.#
.#..#.
....#.
#..#..
....#.
#.....
.##...
......
.#....
......
#....#
......
..#...
......
......
......
.#....
..#...
.#....
#.....
.#.#..
......
##.#..
.#....
......

output:

159
172
137
139
160
140
170
152
85
136

result:

ok 10 numbers

Test #21:

score: 0
Accepted
time: 154ms
memory: 5280kb

input:

10
3233 5
.....
.....
.....
.....
.....
.....
.....
..#..
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
.....
..#..
.....
.....
.....
.....
.....
.....
.....
.....
.....
.#...
.....
.....
.....
.....
.....

output:

909
1104
883
1415
414
508
1035
877
986
1050

result:

ok 10 numbers

Test #22:

score: 0
Accepted
time: 1925ms
memory: 21208kb

input:

1
1000 1000
........#.#....#...............#....#.#.............#.#........#......#.......#...#....#...........#.............#...#............#..................##......#..#.................................##.....###......#..........#..............#.#.................#.......#...........#..............

output:

213

result:

ok 1 number(s): "213"

Test #23:

score: -100
Memory Limit Exceeded

input:

1
100000 10
..........
.......#..
.......#..
.........#
#.....#...
........#.
##...#....
.#........
......#...
..#..#...#
........#.
...#......
..........
.#.......#
.#........
..........
..........
.........#
..........
..........
....#.....
.......#..
.#........
..........
.....#..##
......#..#
.....

output:


result: