Codeforces Round #547 (Div. 3)E. Superhero Battle
問題概要
数字 と長さ の数列 が与えられる. 回目では となるとき, 初めて が 以下になるのは何回目か?(永遠に正の場合は を出力)
制約
解法
累積和における最小値を とします. もし なら, 普通にシミュレーションすればいいです. そうではないときに愚直にやると TLE するので, 少しは考える必要があります.
数列全体の和を としたとき, もし なら数列を周回するたびに が増えていくので, 永遠に正にはなりません. そうではないとき, ラスト一周だけシミュレーションすることにしたいので, の値が 以下になるまでまとめて周回を回します. これは, を で切り上げた回数だけ周回すればいいです(こういうのぱっとわかる人はすごいです. 僕は切り上げるか切り捨てるか毎回実験しています).