文系プログラマーのプログラミング備忘録

Java、競プロ、数学などについて書いてます

Ruined Square [AtCoder Beginner Contest 108 B]

atcoder.jp


正方形の4つの頂点座標のうち、連続した反時計周りの2点が与えられるので、残りの2点を復元せよという問題です。


解説を読んでも全く理解できません。それもそのはず、まともに解こうとしたら回転行列の考え方が必要らしく、回転行列どころか、行列、ベクトル、何一つ分からない私が理解できないのも当然でした。


何とか回転行列を使わずに解けないだろうか……と図を書いていたら、解けました。以下がその図です。


f:id:YukiMoto:20190215132131j:plain


1,2の位置によっては x,y が負の値になってしまいますが、そこは特に何もしなくても上手くいくみたいです。なるほど、解説に書かれていたのはこの解き方のことだったんですね。まあB問題ですし本来は回転行列を使わずにこうやって解くのが正解なんだと思います。