CODE FESTIVAL 2016 Grand Final(Parallel) B:Inscribed Bicycle(500)
問題
https://beta.atcoder.jp/contests/cf16-exhibition-final-open/tasks/cf16_exhibition_final_b
つの座標が与えられる。 点が三角形をなすとき、三角形に内部に存在する同じ半径をもつ つの円の最大の半径を求めよ。 つの円は重なってはいけない。
制約
考え方
円の長さを とする。また三角形ABCの内心円の半径を とする。
- 三角形ABCの内部に半径 の円が つかけるとは
各辺から円の中心までの距離が 以上ある点の集合内であればかくことができる。実はこれはもとの三角形ABCと相似になっている。これを三角形DEFとしておこう。
- 三角形ABCの内部に半径 の円が つかけるとは
三角形DEFにおいて、最大の辺の長さが 以上であれば つの円を重なることなく書くことができる。三角形ABCと三角形DEFは相似で、三角形ABCの最大の長さの辺を AB としておくと、三角形DEFにおける最大の辺を DE とすると、DEの長さは となる。あとは を満たす最大の半径 を二分探索で求めればよい。
Submission #3788170 - CODE FESTIVAL 2016 Grand Final(Parallel)
どこに着目して考察するべきだったか
いきなり三角形ABCの内部に存在する つの円の半径で考えると難しいので、まず つの円で考えるとその後の方針が立てやすそう。 つの円をかける領域がわかると、その中に つの円がかけるとは、領域内の最大の辺の長さが 以上あればよいことがわかる。
相似になっていることに気づく必要があるが、それがわかると三角形DEFの最大の辺の長さは で求めることができる。
ここまでくれば後は二分探索をするだけになる。
何がバグっていたか
得た知見
- 2ついっぺんに考えるのではなく、1つずつ考えてみる。