DOJ logoDOJ
問題
最近追加された問題保存した問題Workbooks
カテゴリDLCコンテストグループチーム掲示板
ランキング
正解数ランキングストリークランキングDOJ Powerランキング
提出状況
問題募集ログイン新規登録
DOJ logoDOJ

OI形式のサブタスク採点、Eloレーティング、Discord認証を備えたオンラインジャッジです。

問題
問題一覧カテゴリ
コミュニティ
コンテストランキング掲示板お知らせ外部のコンテストを開催するガイド
アカウント
ログイン新規登録ジャッジ状態
ポリシー
利用規約DLCの利用規則プライバシーAPI 文書言語ランタイムコンテストの順位報酬レーティングとパフォーマンス
© 2026 DOJ
All rights reserved
解説

X Clash

問題に戻る

解説

まず頂点が反時計回りに与えられる場合を考える。ℓ\ellℓ 上に完全に含まれる辺を除き、各有向辺 eee に対して、衝突しない微小な平行移動ベクトル vvv は e×v≥0e\times v\geq0e×v≥0 を満たす必要がある。負ならその辺の近くで壁と正の面積だけ重なる。等号は境界に沿う移動なので許される。ℓ\ellℓ 上の辺にはこの条件を課さない。

これらの条件を満たす外向きの vvv があれば、その方向に移動し続ければよい。vvv に平行な直線で多角形を切ると、壁の内部にある境界では vvv 方向に多角形の内部から外部へ出られない。したがって空でない内部断面は開口まで続く区間となり、外向きに移しても壁に入らない。頂点を通る断面は極限で扱える。

逆に、連続な経路で取り出せるなら、その経路上の十分小さい非零の変位もすべての条件を満たす。開口上の辺は同じ向きを持ち、全辺のベクトルの和は 000 なので、可能な非零の変位は外向きとなる。開口に平行なら全辺に平行でなければならず、面積が正であることに反する。途中で方向を変える必要はない。

可能な方向の区間の境界は、いずれかの辺に平行である。各辺の両方向を候補としてすべての条件を調べれば O(N2)O(N^2)O(N2) で解ける。添付の naive はこの方法であり、全体の制約でも間に合う。

線形時間の解法もある。b=P2−P1b=P_2-P_1b=P2​−P1​ とし、反時計回りなら s=1s=1s=、時計回りなら とする。 と定める。正の倍率を無視すると外向きのベクトルは と書ける。各辺の条件は

s(e×b)t≥e⋅bs(e\times b)t\geq e\cdot bs(e×b)t≥e⋅b

となる。係数が正なら下限、負なら上限を更新する。係数が 000 で右辺が正なら不可能である。最後の下限が上限以下なら可能であり、等号も許す。

分数を分子と正の分母で保持し、交差積で比較すれば浮動小数点数は不要である。時間計算量は O(N)O(N)O(N)、入力の保存領域は O(N)O(N)O(N) である。内積と外積の絶対値は 8⋅1088\cdot10^88⋅108 以下、分数比較の各積の絶対値は 6.4⋅10176.4\cdot10^{17} 以下なので、符号付き ビット整数で足りる。

サブタスク 1 は三角形のみである。開口と反対側の頂点を開口の内部の点へ向かって移動すればよく、常に取り出せる。入力の読み込みを含めて O(N)O(N)O(N) 時間である。

Solution written by GPT

1
s=−1s=-1s=−1
R(b)=(−by,bx)R(b)=(-b_y,b_x)R(b)=(−by​,bx​)
v=tb−sR(b)v=tb-sR(b)v=tb−sR(b)
6.4⋅1017
646464