以前のコードツリー(Python)
18306 ワード
🔗 質問リンク
https://www.codetree.ai/frequent-problems/war-finish/description
https://www.acmicpc.net/problem/17779(Baekjun-GarimanThering2)
👩🏻💻 コード#コード#4でfor文(x,y,d 1,d 2)により を選択する.(x,y,d 1,d 2)に基づいて境界を5に設定 forゲートによる選挙区の区分
3-1. 外側col->内側colの順に回転
3-2. 境界線(5)に遭遇すると が切断される.
最小(最大-分)の場合、回答は 前回の問題も難しかったです.初めて論理を作るときはよく編みましょう.
https://www.codetree.ai/frequent-problems/war-finish/description
https://www.acmicpc.net/problem/17779(Baekjun-GarimanThering2)
👩🏻💻 コード#コード#
import sys
n = int(sys.stdin.readline().rstrip())
maps = [[0] * (n + 1)] + [[0] + list(map(int, sys.stdin.readline().rstrip().split())) for _ in range(n)]
INF = 1e9
answer = INF
def calculate_rec(x, y, d1, d2):
temp = [[0] * (n + 1) for _ in range(n + 1)]
temp[x][y] = 5 # 라인에 걸치는 부분 5로 설정
for i in range(1, d1 + 1):
temp[x + i][y - i] = 5
for i in range(1, d2 + 1):
temp[x + i][y + i] = 5
for i in range(1, d2 + 1):
temp[x + d1 + i][y - d1 + i] = 5
for i in range(1, d1 + 1):
temp[x + d2 + i][y + d2 - i] = 5
R = [0] * 5 # 선거구 저장
for r in range(1, x + d1):
for c in range(1, y + 1):
if temp[r][c] == 5:
break
R[1] += maps[r][c]
for r in range(1, x + d2 + 1):
for c in range(n, y, -1):
if temp[r][c] == 5:
break
R[2] += maps[r][c]
for r in range(x + d1, n + 1):
for c in range(1, y - d1 + d2):
if temp[r][c] == 5:
break
R[3] += maps[r][c]
for r in range(x + d2 + 1, n + 1):
for c in range(n, y - d1 + d2 - 1, -1):
if temp[r][c] == 5:
break
R[4] += maps[r][c]
R[0] = total - sum(R)
return max(R) - min(R)
total = 0
for i in range(1, n + 1):
total += sum(maps[i])
for x in range(1, n + 1):
for y in range(1, n + 1):
for d1 in range(1, n + 1):
for d2 in range(1, n + 1):
if x + d1 + d2 > n:
continue
if y - d1 < 1:
continue
if y + d2 > n:
continue
answer = min(answer, calculate_rec(x, y, d1, d2))
print(answer)
📝 整理する3-1. 外側col->内側colの順に回転
3-2. 境界線(5)に遭遇すると
最小
Reference
この問題について(以前のコードツリー(Python)), 我々は、より多くの情報をここで見つけました https://velog.io/@hammii/코드트리-종전-pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol