Codeforces Round #377 (Div. 2) A, B, C, D
B
2つを足して、足りない分を後ろに足せばいい。
n = 1のケースのときは、何もしなくていいらしい。これが分からない。
出したやつがそういう実装になっていたので、
無事AC。
C
紙に書いていろいろなケースを試してみると、
一番大きい値の場所から、
i:(+0, +1, +2)%3 _______________ v:(max, max, max) v:(max, max, max-1) v:(max, max-1, max-1)
のケースしかない。これを全探索して、一番小さい値を出力する。
D
いろいろ苦労して間違えたが、全部pretestで引っかかってくれた。
のsumを取って、それ以上の時間iのときにsetに
全部入っていればOKという方針で提出する。
始まりからどう頑張っても勉強時間が足りないものははじく。
i - 1 - a[d[i]] >= 0
AC。
Submission #21545380 - Codeforces
一番最初、嘘解法だと思っていたが撃墜ケースも見つけられない。
これでいいのかな・・・。
別解として、二分探索を利用するものがある。
びくびくするより、こっちの方がスマート。
後ろに0が続いているときに、WAを生やす可能性があるので、
それを取り除く(0が末尾じゃないように調整する)。
Submission #21561791 - Codeforces
なぜ二分探索でいいかというと、ある場所i(答え)を起点に、
左では全部の試験を通過できず、右側では全部の試験を通過できるから。
(false, false, ... , false, true, true, ... , true)
↑の一番最初のtrueの場所を見つけたい。