AtCoder 🟠 ABC436C 2x2 Placing
題目的難度顏色使用 Luogu 上的分級,由簡單到困難分別為 🔴🟠🟡🟢🔵🟣⚫。
🔗 🟠 ABC436C 2x2 Placing
Problem Statement
題意簡述
給定一個 的網格,初始為空。
依序進行 個操作,第 次操作嘗試在 處放置一個覆蓋 的 方塊。
若滿足以下任一條件,則不執行該操作(不放置方塊):
- 方塊超出網格邊界 (即 或 )。
- 方塊覆蓋的 4 個格子中,有任意一格已被先前的方塊佔用。
求最終成功放置的方塊數量。
Constraints
約束條件
思路:模擬 + 雜湊表
本題需要模擬方塊放置的過程。
主要挑戰在於網格大小 可達 ,這意味著我們無法宣告一個 的二維陣列來記錄狀態 (MLE)。
然而,操作數量 最多只有 ,且每個成功放置的方塊只佔用 4 格。因此,被佔用的總格子數最多為 (約 )。這個數量級完全可以使用 雜湊表 (Python 中的 set) 來儲存所有「已佔用」的座標 。
演算法流程:
- 初始化一個空的集合
vis。 - 對於每個操作 :
- 檢查目標 區域的 4 個座標是否已存在於
vis中。 - 若無衝突,則將這 4 個座標加入
vis,並視為一次成功放置。 - (由於題目保證 ,不用檢查是否超出邊界)。
- 檢查目標 區域的 4 個座標是否已存在於
- 輸出結果。
複雜度分析
- 時間複雜度:。每個操作僅涉及常數次 (4次) 的 Set 查詢與插入,Python 的 set 平均操作為 。
- 空間複雜度:。最多儲存 個座標點。
Code
1 | def solve(): |
本部落格所有文章除特別聲明外,均採用CC BY-NC-SA 4.0 授權協議。轉載請註明來源 十六個天亮!
評論
WalineGiscus










![Luogu 🟣 P4062 [Code+#1] Yazid 的新生舞会](https://i.pixiv.cat/img-master/img/2026/04/13/04/07/06/143491427_p2_master1200.jpg)


