B - Coloring Matrix Editorial by HideN2000
Pythonライブラリを用いた簡素な実装本問題に取り組む上で最も難しいポイントは,行列の回転を実装するところだと思われますが,これは自前で実装せずともnumpyのnp.rot90()を利用すれば解決できます.
この際,np.rot90()を適用するにあたって,もともとの配列をnumpy.ndarrayに変換する必要があることに注意する必要があります.
また,こうすることで,回転後の行列aと行列bが題意を満たすかを
np.min(b - a) >= 0
のように簡潔に表現することも可能です.
以上の事柄を全て踏まえた場合のPython3による実装例を示します.
import numpy as np
n = int(input())
a_ = [list(map(int, input().split())) for i in range(n)]
b_ = [list(map(int, input().split())) for i in range(n)]
#np.ndarrayに変換
a = np.array(a_)
b = np.array(b_)
#高々4回まで回転させたケースを試せばよい
for i in range(4):
if np.min(b - a) >= 0:
print("Yes")
exit(0)
#aを回転する
a = np.rot90(a)
print("No")
posted:
last update: