題解:AT_abc375_c [ABC375C] Spiral Rotation

Redamancy_Lydic發表於2024-10-13

看懂題以後其實也不太難。

題意有點難懂,但是藉助樣例不難發現第一次操作是把原圖按順時針轉 \(90^{\circ}\)。此時再看題面,易得操作就是每次把圖的一部分順時針旋轉 \(90^{\circ}\),最開始為整圖操作,每次操作後都捨棄當前操作的圖的最外層一圈後再進行下一次操作。

看懂題意以後,我們發現直接模擬肯定是不行的,但是我們可以分別對每個點考慮。

具體的,我們設點 \((x,y)\) 一共被操作了 \(k\) 次,因為操作時 \(4\) 次一迴圈,所以我們只需要考慮 \(k\)\(4\) 取餘後的值。

容易發現點 \((x,y)\) 旋轉一次後座標會變成 \((y,n-x+1)\),那麼我們只需要執行 \(k\) 次後就可以得到 \((x,y)\) 現在的位置。

這樣我們構建一張新矩陣,把原圖上的點與其一一對應,最後輸出即可。

提交記錄

相關文章