回到文章

APCS Jun 2024 - o077


APCS Jun 2024 - o077 Q2 [Python]

本題敘述:

有一個 H x W 的電子畫布,一開始數值都是 0 代表未填色,接下來請模擬 N 次畫筆操作。

每次畫筆操作為選一個座標 (r,c) 停留 t 秒,他會將曼哈頓距離 <= t 區塊染上 x 顏色。若有多個顏色重複填到相同區塊,顏色的數值會加起來。

請輸出 N 次操作後的畫布狀態。

H,W,N = map(int,input().split())

a = [[0 for _ in range(W)] for _ in range(H)]

for _ in range(N):
    r,c,time,num = map(int,input().split())
    for rr in range(r - time,r + time + 1):
        for cc in range(c - time , c + time +1):
            if 0 <= rr < H and 0 <= cc < W and abs(rr - r)+ abs(cc-c) <= time: # 曼哈頓距離公式
                a[rr][cc] += num

for i in a:
    for j in i:
        print(j,end=' ')
    print('\n', end='')



本題重點:

  1. 曼哈頓距離
    • 曼哈頓距離是一種距離度量方式,定義為在一個正交網格上,兩個點之間的距離為它們在水平方向和垂直方向上的距離之和。例如,兩個點 (r, c)(rr, cc) 之間的曼哈頓距離計算公式為:
      • D = |rr - r| + |cc - c|

本題知識:

  • 模擬?

  • [✔️] 程式碼如果需要可以直接使用。
  • [✔️] 分享貼文請標註來源。

image