QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#516238 | #9132. Painting Fences | arnold518# | WA | 0ms | 3824kb | C++17 | 2.3kb | 2024-08-12 14:54:02 | 2024-08-12 14:54:03 |
Judging History
answer
#include <bits/stdc++.h>
#define ff first
#define ss second
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
void get(int l, int r, vector<pii> &V) {
V.push_back({l, r});
if (l == r) return;
int m = (l + r) / 2;
if ((r - l + 1) % 2 == 0) {
get(l, m, V);
get(m + 1, r, V);
}
else {
get(l, m, V);
get(m, r, V);
}
}
int lg(int n) {
return n == 1 ? 0 : __lg(n - 1) + 1;
}
int ceil(int n, int k) {
return (n + k - 1) / k;
}
int solve(int l, int r, int n) {
int s = l - 1;
int k = r - l + 1;
int ret = 0;
if (s != 0) {
int b = ceil(s, k);
int os = 0, fs = 0;
for (int i = 0; i <= __lg(b); i++) {
if (b >> i & 1) os += 1 << i;
else fs += 1 << i;
}
if (r + fs >= n) return 1e9;
r += fs;
ret += __lg(b) + 1;
}
return ret + lg(ceil(n, r));
}
int main() {
cin.tie(0); ios_base::sync_with_stdio(0);
int n, m;
cin >> n >> m;
int a[n + 1][m + 1]{};
for (int i = 1; i <= n; i++) {
string S;
cin >> S;
for (int j = 1; j <= m; j++) {
a[i][j] = (S[j - 1] == '1');
}
}
int ans = 1e9;
int h[m + 2]{};
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (a[i][j]) h[j]++;
else h[j] = 0;
}
h[0] = -2;
h[m + 1] = -1;
vector<int> S;
S.push_back(0);
for (int j = 1; j <= m + 1; j++) {
while (!S.empty() && h[S.back()] >= h[j]) {
int H = h[S.back()];
S.pop_back();
int prv = S.back() + 1;
// solve (i - H + 1, i), (prv, j - 1)
if (H != 0) {
int x1 = solve(i - H + 1, i, n);
int x2 = solve(n - i + 1, n - (i - H + 1) + 1, n);
int y1 = solve(prv, j - 1, m);
int y2 = solve(m - (j - 1) + 1, m - prv + 1, m);
ans = min(ans, min(x1, x2) + min(y1, y2));
}
}
S.push_back(j);
}
}
cout << ans << '\n';
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3532kb
input:
4 4 1001 0100 0110 0110
output:
3
result:
ok 1 number(s): "3"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3824kb
input:
3 3 000 111 111
output:
1
result:
ok 1 number(s): "1"
Test #3:
score: 0
Accepted
time: 0ms
memory: 3604kb
input:
4 3 011 011 001 110
output:
2
result:
ok 1 number(s): "2"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3540kb
input:
4 4 0011 1111 1111 1111
output:
1
result:
ok 1 number(s): "1"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3812kb
input:
4 4 0000 0010 0100 1000
output:
4
result:
ok 1 number(s): "4"
Test #6:
score: 0
Accepted
time: 0ms
memory: 3524kb
input:
2 5 00010 00111
output:
2
result:
ok 1 number(s): "2"
Test #7:
score: 0
Accepted
time: 0ms
memory: 3616kb
input:
5 5 11111 11111 11111 01111 11111
output:
1
result:
ok 1 number(s): "1"
Test #8:
score: 0
Accepted
time: 0ms
memory: 3544kb
input:
5 5 00101 00000 00001 00000 00100
output:
6
result:
ok 1 number(s): "6"
Test #9:
score: 0
Accepted
time: 0ms
memory: 3524kb
input:
5 5 00000 00000 00001 10000 00000
output:
6
result:
ok 1 number(s): "6"
Test #10:
score: 0
Accepted
time: 0ms
memory: 3528kb
input:
10 10 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111
output:
0
result:
ok 1 number(s): "0"
Test #11:
score: 0
Accepted
time: 0ms
memory: 3588kb
input:
10 10 0001000000 0000000000 0000000000 0000000001 0000000001 0000000001 0000000000 0000000000 0000000000 0000000001
output:
6
result:
ok 1 number(s): "6"
Test #12:
score: 0
Accepted
time: 0ms
memory: 3524kb
input:
10 10 1111111110 1111111110 1111111110 1111111110 1111111110 1111100110 1111100010 1111101110 1111101100 1111100000
output:
1
result:
ok 1 number(s): "1"
Test #13:
score: 0
Accepted
time: 0ms
memory: 3608kb
input:
10 10 0000000000 0000001000 0000000000 0000000000 0000000000 0100000000 0000000000 0000000100 0000000000 0000000000
output:
8
result:
ok 1 number(s): "8"
Test #14:
score: 0
Accepted
time: 0ms
memory: 3596kb
input:
30 31 0000000000000000000000000000000 0000000000000000000000000000000 1111111111111110000000000000011 1111111111111110000000000000011 1111111111111110000000000000011 1111111111111111111111111111111 1111111111111111111111111111111 1111111111111111111111111111100 1111111111111111111111111111100 111111...
output:
3
result:
ok 1 number(s): "3"
Test #15:
score: 0
Accepted
time: 0ms
memory: 3592kb
input:
30 31 0000000000000000000000000000000 0000000000000000000000000000000 0000000001000000000000000000000 0000000000000000000000100000000 0000000000000000000100000000000 0000000000000000001000000000000 0000000000000010000000000000000 0000000000000000000000000000000 0000000000000000000000000100110 000000...
output:
10
result:
ok 1 number(s): "10"
Test #16:
score: 0
Accepted
time: 0ms
memory: 3480kb
input:
30 31 0000000000000000000000000000000 0000000011111111111111000000000 0000000011111111111111000000000 1111111111111111111111000000000 1111111111111111111111000000000 1111111111111111111111000000000 1111111111111111111111000111100 1111111111111111111111000111100 1111111111111111111111000111100 111111...
output:
3
result:
ok 1 number(s): "3"
Test #17:
score: 0
Accepted
time: 0ms
memory: 3596kb
input:
30 31 0000001010000000000000000000000 0000000000000000000000000000000 0000000000000000001000000000000 0000010000000000000000000000000 0000000000000000000000000000000 0000000000000000000000000000000 0000001000010000000000000000000 0000100000010010000000000000000 0000000001000001000000010000000 000000...
output:
9
result:
ok 1 number(s): "9"
Test #18:
score: 0
Accepted
time: 0ms
memory: 3620kb
input:
50 50 01111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111 111111111111111111111111111111111111111...
output:
1
result:
ok 1 number(s): "1"
Test #19:
score: 0
Accepted
time: 0ms
memory: 3556kb
input:
50 50 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000...
output:
6
result:
ok 1 number(s): "6"
Test #20:
score: 0
Accepted
time: 0ms
memory: 3592kb
input:
50 50 00000000000000000000000000000000000000000000000000 00000000000000000000000001000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000...
output:
11
result:
ok 1 number(s): "11"
Test #21:
score: 0
Accepted
time: 0ms
memory: 3792kb
input:
50 50 00000111111111111111111111111111111111111111111111 00001111111111111111111111111111111111111111111111 00001111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111 111111111111111111111111111111111111111...
output:
1
result:
ok 1 number(s): "1"
Test #22:
score: 0
Accepted
time: 0ms
memory: 3608kb
input:
50 50 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000111111100 00000000000000000000000000000000000000000111111100 00111111111111111111111110000000000000000111111100 001111111111111111111111100000000000000...
output:
4
result:
ok 1 number(s): "4"
Test #23:
score: 0
Accepted
time: 0ms
memory: 3760kb
input:
50 50 00000000000000000000000000000000000100000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000001 00000000000000000000000000000000000000000000000000 000000000000000000000000000000000001000...
output:
11
result:
ok 1 number(s): "11"
Test #24:
score: 0
Accepted
time: 0ms
memory: 3604kb
input:
1 20 01111111111111111111
output:
1
result:
ok 1 number(s): "1"
Test #25:
score: 0
Accepted
time: 0ms
memory: 3588kb
input:
1 20 00111111111111111111
output:
1
result:
ok 1 number(s): "1"
Test #26:
score: 0
Accepted
time: 0ms
memory: 3784kb
input:
1 20 00111111111111111110
output:
2
result:
ok 1 number(s): "2"
Test #27:
score: 0
Accepted
time: 0ms
memory: 3820kb
input:
1 100 0000000000000000000000000000000000000001000000000100000000000000000100000000000000000000000000000000
output:
7
result:
ok 1 number(s): "7"
Test #28:
score: 0
Accepted
time: 0ms
memory: 3788kb
input:
1 500 000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
2
result:
ok 1 number(s): "2"
Test #29:
score: 0
Accepted
time: 0ms
memory: 3548kb
input:
1 500 000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
2
result:
ok 1 number(s): "2"
Test #30:
score: 0
Accepted
time: 0ms
memory: 3536kb
input:
1 500 000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
2
result:
ok 1 number(s): "2"
Test #31:
score: 0
Accepted
time: 0ms
memory: 3524kb
input:
1 500 000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
2
result:
ok 1 number(s): "2"
Test #32:
score: 0
Accepted
time: 0ms
memory: 3532kb
input:
1 500 000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
2
result:
ok 1 number(s): "2"
Test #33:
score: 0
Accepted
time: 0ms
memory: 3596kb
input:
1 1000 00000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
2
result:
ok 1 number(s): "2"
Test #34:
score: 0
Accepted
time: 0ms
memory: 3608kb
input:
1 1000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000010000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000001000000000000000000000000000000000000000000000000000...
output:
10
result:
ok 1 number(s): "10"
Test #35:
score: 0
Accepted
time: 0ms
memory: 3624kb
input:
1 1000 00000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
1
result:
ok 1 number(s): "1"
Test #36:
score: -100
Wrong Answer
time: 0ms
memory: 3604kb
input:
1 1000 00000000000000000000000000000000000010000010000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000001000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
10
result:
wrong answer 1st numbers differ - expected: '9', found: '10'