C: Magic Bullet 担当: 川満 問題概要 • 3次元空間に𝑁 ≤ 50 個の球状の障害物が与えられる • ある座標からある目標の座標に向かって弾を撃つ • 弾に魔力があれば障害物を貫通できる • 目標の座標に届かせるために必要な魔力の量は? 解法 • 3次元幾何問題 • 線分と球の交差判定ができればよい • 解法の例 1. 球の中心座標が原点になるように線分を平行移動 2. 線分を通る直線上の点のうち、原点に最も近い点を求める 3. 求めた点が線分上にあり、かつ求めた点と原点との距離が 球の半径以下かを判定する 直線上の点で原点に最も近い点 点s 𝑣 • 点sおよび点tを通る直線を考える 点t • 点sから点tに向かうベクトルを𝑣とする • 原点から点sに向かうベクトルを𝑠とすると、直線上 の点pは変数𝑥を用いて、 𝑠 + 𝑥 𝑣となる 直線上の点で原点に最も近い点 • 原点と点pの距離の2乗を𝑓(𝑥)とすると、𝑓 𝑥 = 𝑠 + 𝑥 𝑣 2 となる • 𝑓′ 𝑥 = 0となるのは𝑥 = − 𝑠∙𝑣 のときであり、このと 𝑣2 きに点pは原点に最も近くなる ジャッジ解 • 63行、1181 bytes Results • FA: 動画勢「まさかの3000AC」 (18:50) • 28 ACs, 29 trying teams, 50 submissions
© Copyright 2024 ExpyDoc