提出 #35188417
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define TIME 1e3 * clock() / CLOCKS_PER_SEC
using ll = long long;
using uint = unsigned int;
using lll = __int128;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using ull = unsigned long long;
inline ll read() {
ll x = 0, sgn = 0;
char s = getchar();
while(!isdigit(s)) sgn |= s == '-', s = getchar();
while(isdigit(s)) x = x * 10 + s - '0', s = getchar();
return sgn ? -x : x;
}
inline void print(int x) {
if(x < 0) return putchar('-'), print(-x);
if(x >= 10) print(x / 10);
putchar(x % 10 + '0');
}
bool Mbe;
constexpr int N = 185 + 5;
int n, m, p[N][N], q[N][N], f[N][N][N], ff[N][N][N];
char t[N][N];
int calcp(int a, int b, int c, int d) {
return p[c][d] - p[a - 1][d] - p[c][b - 1] + p[a - 1][b - 1];
}
int calcq(int a, int b, int c, int d) {
return q[c][d] - q[a - 1][d] - q[c][b - 1] + q[a - 1][b - 1];
}
bool Med;
int main() {
fprintf(stderr, "%.3lf MB\n", (&Mbe - &Med) / 1048576.0);
#ifdef ALEX_WEI
FILE* IN = freopen("1.in", "r", stdin);
FILE* OUT = freopen("1.out", "w", stdout);
#endif
cin >> n >> m;
for(int i = 1; i <= n; i++) cin >> t[i] + 1;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++) {
p[i][j] = p[i - 1][j] + p[i][j - 1] - p[i - 1][j - 1] + (t[i][j] == '#');
q[i][j] = q[i - 1][j] + q[i][j - 1] - q[i - 1][j - 1] + (t[i][j] == '.');
}
for(int k = 1; k <= m; k++)
for(int l = 1; l <= n; l++) {
int bound = m;
for(int r = l; r <= n; r++) {
while(calcp(l, k, r, bound) && calcq(l, k, r, bound)) bound--;
f[k][l][r] = bound;
}
}
for(int i = 0; ; i++) {
if(f[1][1][n] == m) cout << i << "\n", exit(0);
for(int k = 1; k <= m; k++)
for(int l = 1; l <= n; l++) {
int p = l;
for(int r = l; r <= n; r++) {
auto val = [&](int p) {return min(f[k][l][p], f[k][p + 1][r]);};
while(p + 1 < r && val(p) <= val(p + 1)) p++;
ff[k][l][r] = max(val(p), max(f[k][l][r], f[f[k][l][r] + 1][l][r]));
}
}
swap(f, ff);
}
cerr << TIME << " ms\n";
return 0;
}
/*
2022/9/27
author: Alex_Wei
start coding at 7:05
finish debugging at 7:51
*/
提出情報
| 提出日時 |
|
| 問題 |
D - Complexity |
| ユーザ |
Alex_Wei |
| 言語 |
C++ (GCC 9.2.1) |
| 得点 |
1000 |
| コード長 |
2222 Byte |
| 結果 |
AC |
| 実行時間 |
465 ms |
| メモリ |
57604 KiB |
コンパイルエラー
./Main.cpp: In function ‘int main()’:
./Main.cpp:42:43: warning: suggest parentheses around ‘+’ inside ‘>>’ [-Wparentheses]
42 | for(int i = 1; i <= n; i++) cin >> t[i] + 1;
| ~~~~~^~~
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
1000 / 1000 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
sample01.txt, sample02.txt |
| All |
sample01.txt, sample02.txt, in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, sample01.txt, sample02.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| in01.txt |
AC |
335 ms |
57504 KiB |
| in02.txt |
AC |
356 ms |
57520 KiB |
| in03.txt |
AC |
356 ms |
57536 KiB |
| in04.txt |
AC |
375 ms |
57452 KiB |
| in05.txt |
AC |
316 ms |
57384 KiB |
| in06.txt |
AC |
325 ms |
57532 KiB |
| in07.txt |
AC |
465 ms |
57556 KiB |
| in08.txt |
AC |
454 ms |
57416 KiB |
| in09.txt |
AC |
32 ms |
30052 KiB |
| in10.txt |
AC |
1 ms |
3528 KiB |
| in11.txt |
AC |
131 ms |
57556 KiB |
| in12.txt |
AC |
151 ms |
57604 KiB |
| in13.txt |
AC |
151 ms |
57400 KiB |
| in14.txt |
AC |
175 ms |
57516 KiB |
| in15.txt |
AC |
173 ms |
57520 KiB |
| in16.txt |
AC |
172 ms |
57556 KiB |
| in17.txt |
AC |
197 ms |
57336 KiB |
| in18.txt |
AC |
163 ms |
57472 KiB |
| in19.txt |
AC |
193 ms |
57480 KiB |
| in20.txt |
AC |
170 ms |
57368 KiB |
| in21.txt |
AC |
414 ms |
57524 KiB |
| in22.txt |
AC |
31 ms |
30064 KiB |
| in23.txt |
AC |
225 ms |
57552 KiB |
| in24.txt |
AC |
368 ms |
57548 KiB |
| in25.txt |
AC |
220 ms |
57480 KiB |
| in26.txt |
AC |
312 ms |
57404 KiB |
| in27.txt |
AC |
258 ms |
57444 KiB |
| in28.txt |
AC |
286 ms |
57552 KiB |
| in29.txt |
AC |
198 ms |
57548 KiB |
| in30.txt |
AC |
201 ms |
57600 KiB |
| in31.txt |
AC |
272 ms |
57572 KiB |
| in32.txt |
AC |
276 ms |
57412 KiB |
| in33.txt |
AC |
295 ms |
57512 KiB |
| in34.txt |
AC |
299 ms |
57600 KiB |
| in35.txt |
AC |
336 ms |
57560 KiB |
| in36.txt |
AC |
335 ms |
57488 KiB |
| in37.txt |
AC |
424 ms |
57456 KiB |
| in38.txt |
AC |
428 ms |
57476 KiB |
| sample01.txt |
AC |
66 ms |
57220 KiB |
| sample02.txt |
AC |
77 ms |
57220 KiB |