mini notes

競技プログラミングの解法メモを残していきます。

ABC189 E - Rotate and Flip

問題:E - Rotate and Flip

解答:Submission #19699054 - AtCoder Beginner Contest 189

解法:与えられた4種類の座標変換は、tT = [x, y, 1]に対し、3×3の行列Aを左から乗じることで計算することが出来る。具体的には下記の通りである。

  1. [[0, 1, 0], [-1, 0, 0], [0, 0, 1]]
  2. [[0, -1, 0], [1, 0, 0], [0, 0, 1]]
  3. [[1, 0, 0], [0, -1, 2p], [0, 0, 1]]
  4. [[-1, 0, 2p], [0, 1, 0], [0, 0, 1]]

あとは、各回までの変換をO(1)で行うために、その回までの変換行列を累積積のような形で蓄えておき、各クエリにO(1)で答えてゆけばよい。