毎日自分のレート+400以上のdiffの問題を解きます。
問題リンク
F - Silver Fox vs Monster
解法
座標順にソートした後、単純に前から順に「 が負ならcontinue, 正なら座標が から の間にあるモンスターの体力に 以上の最小の の倍数を引く」という操作を行う。
座標が範囲内にある最大の添字は二分探索、体力の更新は遅延セグメント木を使えば で処理できるので、全体で となる。
毎日自分のレート+400以上のdiffの問題を解きます。
問題リンク
F - Silver Fox vs Monster
座標順にソートした後、単純に前から順に「 が負ならcontinue, 正なら座標が から の間にあるモンスターの体力に 以上の最小の の倍数を引く」という操作を行う。
座標が範囲内にある最大の添字は二分探索、体力の更新は遅延セグメント木を使えば で処理できるので、全体で となる。
毎日自分のレート+400以上のdiffの問題を解きます。
問題リンク
C - AtCoDeer and Election Report
投票数が満たすべき条件は 「広義単調増加」 かつ 「比が 」
したがってi回目での投票数は
「 回目の投票数以上の最小の の倍数 」
「 回目の投票数以上の最小の の倍数 」
のうち大きい方を 回目の投票数にかければ良い。計算量は
Submission #53756132 - AtCoder Beginner Contest 046
毎日自分のレート+400以上のdiffの問題を解きます。 問題リンク D - joisino's travel
という制約からワーシャルフロイド法 が見えてくる。町を訪れる順番は順列全探索で 、順番が決まれば移動距離の総和は で求められるので、合計で となりAC。
Submission #53721947 - AtCoder Beginner Contest 073
問題リンク
答えを二分探索する。
「 冊読めるか」の判定は、事前に累積和を取り「机Aの本を 冊読むための所要時間」(Bも同様)を求めれば、机Aで 冊、机Bで 冊読むとしてそれぞれの所要時間の和が以下かどうか判定すれば良い。
判定は で行うことができ、 の全探索で 、答えの範囲は 以上 以下なので二分探索で 、よって全体の計算量は となる。
問題リンク
F - Double Sum
問題の式を次のように変形する。
したがって、
を求め、その総和を取ればよいことが分かる。
これはをからの順に考えると、
の2本のsegment tree(どちらも一点加算区間総和)を使えば良いので、計算量は
座標圧縮が必要なので注意。