pekempeyのブログ

競技プログラミングに関する話題を書いていきます。

Codeforces Round #346 (Div. 2) D. Bicycle Race

http://codeforces.com/contest/659/problem/D

問題概要

与えられたコースでサイクリングをする。右折・左折をせずに真っ直ぐ進んだら湖に落ちてしまうような場所は何箇所あるだろうか。

http://codeforces.com/predownloaded/9a/1c/9a1c7b0e5fc0dd840fc91bbc2450e00e2f607a07.png

なお与えられるコースは時計回りであることが保証されている。

解法

危険な場所というのはどういう場所だろうか。少し複雑なコースを作ってみよう。

f:id:pekempey:20160331171120p:plain:w400

左折箇所がすべて危険だと分かる。

右折か左折かを判定するのは外積の符号を見るのが楽。

Codeforces Round #346 (Div. 2) D. Bicycle Race

本番では無駄にコースが時計回りか反時計回りかを判定をしてしまった。