競技プログラミング用 知識集積所

ABC418E - Trapezium

最終更新:

sport_programming

- view
管理者のみ編集可


問題


必要知識

B以下レベルの内容は省略
  • 特になし

考え方

台形そのものというよりも、2本の平行線の組を数えればよい。
3点が一直線上にないということは、単純に2点間の方向ベクトルを全て求めて何らかの規格化をし、同一の方向ベクトルの組が何組作れるかを考えればよい。
規格化は、dx>0または(dx==0&&dy>0)、かつdxとdyは互いに素になるようにするのが簡単か。

ただし、これでは平行四辺形を2回数えてしまう。
そこで、方向ベクトルを求める際に向きだけ調整したものも保管しておくことで、平行四辺形の個数も求めて引き算するとよい。

解答例


注意点


別解

ウィキ募集バナー