ツバサの備忘録

主に備忘録代わりに精進記録を載せていくつもりです。

AOJ 1194 - バンパイア

バンパイア
提出コード
初めての幾何問題です。
f:id:emtubasa:20180905124517p:plain まずはt = 0のときの、x座標がiの部分の太陽の高さを求めます。
ビルの左右の端が小数になることはないので、iは整数の座標の部分のみ求めます。太陽の高さはx=0の右側が単調減少、左側は単調増加となっているからです。
上の図でいうと、dが求めたい部分になります。
三平方の定理を利用して、
d = r - \sqrt{r^{2}-i^{2}}
となります。
iを、-rからrまで動かして先に計算しておきます。
あとは、iのときのビルの高さをhとして、h+dの最小値を求めると答えになります。
ビルは、[l,r)もしくは(l,r]として入力しないと、小数点の座標部分がうまく記録されないので注意しましょう。
そしてその場合、x座標がiの太陽の高さとビルの高さを利用して答えを求めるとき、iより左側のビルの高さと、iより右側のビルの高さの、2つを調べる必要があるので注意しましょう(端だけは1つになります)。