Codeforces Round #763 感想
A. Robot Cleaner
なんか頭がぼーっとしていて、もたつきました。
問題文
ロボット掃除機が
ロボット掃除機は
ロボット掃除機は
ロボットが上下左右にある壁にぶつかると、進行方向が反射します。上下の壁にぶつかると進行方向は
汚れたマス目が
ロボットは自分と同じ行または同じ列のマス目をすべて掃除します。
ロボットが汚れたマス目を掃除するまでに必要な秒数を求めてください。
制約
1 \le t \le 10^4 1 \le n \le 100 1 \le r_b, r_d \le n 1 \le c_b, c_d \le m
解法
縦と横を独立に考えます。
まず、横を考えると、ロボットは右へ進んでいって、それから右端を折り返して左へ進みます。
- このとき、
なら、右へ進んでいく途中で掃除できます。答えはc_b \le c_d になります。c_d - c_b - そうでなければ、右へ折り返した後で掃除できます。答えは
です。(m - c_b) + (m - c_d)
縦についても同様に考えます。
縦と横の答えの小さい方を答えます。
B. Game on Ranges
未証明の、直感です…。
問題文
アリスとボブがゲームをします。
アリスは互いに重ならない整数の区間の集合
毎ターンで、アリスは区間
ゲームをした後、アリスは質問した区間
しかしボブは賢いので、
制約
1 \le t \le 1000 1 \le n \le 1000 1 \le l_i \le r_i \le n \sum_\text{testcase} n \le 1000
解法
まず、区間を幅の昇順でソートします。
小さい方から答えを決定していきます。
区間
-
なら答えはl = r です。l - そうでないなら、区間に含まれる整数のうち、以前答えていないものが答えです。
- これは、必ずひとつに定まります。なぜなら、今見ている区間に答えた後は長さは
以上減るので、これに含まれる区間はすべて、以前に処理したはずだからです。1
- これは、必ずひとつに定まります。なぜなら、今見ている区間に答えた後は長さは
C. Balanced Stone Heaps
典型なのですんなりいきました。
問題文
-
から3 まで順番にします。今見ている山の番号をn とします。i - 適当な整数
を選びます。d \in [0, \frac{h_i}{3}] -
番目の山からi 番目の山へ、i - 1 個の石を動かします。d -
番目の山からi 番目の山へ、i - 2 個の石を動かします。2d
操作をした後の、
制約
1 \le t \le 2 \times 10^5 3 \le n \le 2 \times 10^5 1 \le h_i \le 10^9 \sum_{\text{testcase}} n \le 2 \times 10^5
解法
最小値の最大値なので、まず二分探索を疑います。実際、
判定は、後ろから操作を考えることで行います。とはいっても、実際の操作は前から行うので、後ろの山からもらってきた石を前の山にあげることはできません。
今ある石と、後ろの山からもらってきた石の合計が
Discussion