思念の滝壺

山に登る。

ABC144

D問題

幾何計算。arctanとかPIのC++での使い方をググるのに時間を食う。

 

E問題

Kのオーダーが大きすぎるので「Kを分配する」考え方ができない。

全体の方針を考えていたら時間が足りなくなったが、「最小値としてXを達成可能か」を判定すれば、Xがある値より大きければ可能、それより小さければ不可能という一方向性が成り立つため、二分探索ができることに思い当たった。

実践で二分探索を発想できたのは初なので大きな成果と思いたい。

 

残りはXを与えられたときの判定をO(N)で行えばよい。

Fは降順ソート、Aは昇順ソートする。

Y = sum(A)-K から、A[i]の各要素の値を超えない範囲、かつF[i]*A[i]がXを超えない範囲でB[i]に分配していき、Yを0にすることができたら達成可能、できなかったら達成不可能。

これで通った。 あとは時間内にやるだけ。