提出 #27453026
ソースコード 拡げる
import sys,random,bisect from collections import deque,defaultdict from heapq import heapify,heappop,heappush from itertools import cycle, permutations from math import log,gcd input = lambda :sys.stdin.readline().rstrip() mi = lambda :map(int,input().split()) li = lambda :list(mi()) H,W = mi() A = [input() for i in range(H)] dp_c = [[[k-1 for k in range(W)] for j in range(H)] for i in range(H)] dp_r = [[[i-1 for i in range(H)] for l in range(W)] for k in range(W)] """ init """ for i in range(H): ok = [A[i][j] for j in range(W)] for k in range(W)[::-1]: if k!=W-1 and ok[k]==ok[k+1]: dp_c[i][i][k] = dp_c[i][i][k+1] else: dp_c[i][i][k] = k for j in range(i+1,H): for k in range(W): if ok[k]!=A[j][k]: ok[k] = "" for k in range(W)[::-1]: if ok[k]: if k!=W-1 and ok[k]==ok[k+1]: dp_c[i][j][k] = dp_c[i][j][k+1] else: dp_c[i][j][k] = k for k in range(W): ok = [A[i][k] for i in range(H)] for i in range(H)[::-1]: if i!=H-1 and ok[i]==ok[i+1]: dp_r[k][k][i] = dp_r[k][k][i+1] else: dp_r[k][k][i] = i for l in range(k+1,W): for i in range(H): if ok[i]!=A[i][l]: ok[i] = "" for i in range(H)[::-1]: if ok[i]: if i!=H-1 and ok[i]==ok[i+1]: dp_r[k][l][i] = dp_r[k][l][i+1] else: dp_r[k][l][i] = i """ update """ for ans in range(17): if dp_c[0][H-1][0]==W-1: exit(print(ans)) """ dp_c:たての切断の分を更新 dp_r:よこの切断の分を更新 どちらもダブリングの要領で """ for i in range(H): for j in range(i,H): tmp = dp_c[i][j] for k in range(W): next_c = tmp[k] + 1 if next_c < W: tmp[k] = tmp[next_c] for k in range(W): for l in range(k,W): tmp = dp_r[k][l] for i in range(H): next_r = tmp[i] + 1 if next_r < H: tmp[i] = tmp[next_r] """ dp_c:よこの切断の分を更新 l <= dp_c[i][j][k] iff j <= dp_r[k][l][i] jについて単調性があるのでjごとに尺取り """ for i in range(H): for k in range(W): l = k-1 for j in range(i,H)[::-1]: while l!=W-1 and j <= dp_r[k][l+1][i]: l += 1 if l > dp_c[i][j][k]: dp_c[i][j][k] = l """ dp_r:たての切断の分を更新 j <= dp_r[k][l][i] iff l <= dp_c[i][j][k] lについて単調線があるのでlについて尺取り """ for k in range(W): for i in range(H): j = i-1 for l in range(k,W)[::-1]: while j!=H-1 and l <= dp_c[i][j+1][k]: j += 1 if j > dp_r[k][l][i]: dp_r[k][l][i] = j #dp_c = n_dp_c
提出情報
提出日時 | |
---|---|
問題 | D - Complexity |
ユーザ | chinerist |
言語 | PyPy3 (7.3.0) |
得点 | 1000 |
コード長 | 3289 Byte |
結果 | AC |
実行時間 | 4930 ms |
メモリ | 200144 KiB |
ジャッジ結果
セット名 | 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 | 3167 ms | 172428 KiB |
in02.txt | AC | 3667 ms | 175404 KiB |
in03.txt | AC | 3224 ms | 164712 KiB |
in04.txt | AC | 3802 ms | 177232 KiB |
in05.txt | AC | 2766 ms | 158640 KiB |
in06.txt | AC | 3439 ms | 176236 KiB |
in07.txt | AC | 4930 ms | 199564 KiB |
in08.txt | AC | 4807 ms | 199668 KiB |
in09.txt | AC | 432 ms | 197636 KiB |
in10.txt | AC | 108 ms | 81468 KiB |
in11.txt | AC | 1786 ms | 199080 KiB |
in12.txt | AC | 1904 ms | 199408 KiB |
in13.txt | AC | 2056 ms | 199052 KiB |
in14.txt | AC | 2322 ms | 198896 KiB |
in15.txt | AC | 2144 ms | 198884 KiB |
in16.txt | AC | 2132 ms | 199028 KiB |
in17.txt | AC | 2048 ms | 148396 KiB |
in18.txt | AC | 1497 ms | 142832 KiB |
in19.txt | AC | 1909 ms | 143148 KiB |
in20.txt | AC | 1417 ms | 140392 KiB |
in21.txt | AC | 4215 ms | 199416 KiB |
in22.txt | AC | 420 ms | 197768 KiB |
in23.txt | AC | 2593 ms | 199912 KiB |
in24.txt | AC | 3822 ms | 199736 KiB |
in25.txt | AC | 2434 ms | 171180 KiB |
in26.txt | AC | 3838 ms | 200144 KiB |
in27.txt | AC | 2918 ms | 177408 KiB |
in28.txt | AC | 3824 ms | 193332 KiB |
in29.txt | AC | 2450 ms | 199600 KiB |
in30.txt | AC | 2419 ms | 199700 KiB |
in31.txt | AC | 3282 ms | 199960 KiB |
in32.txt | AC | 3221 ms | 199516 KiB |
in33.txt | AC | 3582 ms | 200112 KiB |
in34.txt | AC | 3657 ms | 199600 KiB |
in35.txt | AC | 3819 ms | 199812 KiB |
in36.txt | AC | 3991 ms | 200104 KiB |
in37.txt | AC | 4460 ms | 199572 KiB |
in38.txt | AC | 4516 ms | 199696 KiB |
sample01.txt | AC | 126 ms | 81248 KiB |
sample02.txt | AC | 116 ms | 82892 KiB |