mini notes

競技プログラミングの解法メモを残していきます。

ABC161 E - Yutori

問題:E - Yutori

解答:Submission #11561483 - AtCoder Beginner Contest 161

解法:まず、左から貪欲に仕事をすることを考える(なるべく前に仕事を終わらせる)。vl[i]:i日目に仕事の割り当てがあれば何番目の仕事か(割り当てがなければ-1)とするとき、vl[i] = x はx番目の仕事が最短でi日目に割り当てられることを意味する。

次に、右から貪欲に仕事をすることを考える(なるべく後に仕事を終わらせる)。vr[i]:i日目に仕事の割り当てがあれば何番目の仕事か(割り当てがなければ-1)とするとき、vr[i] = x はx番目の仕事が最遅でi日目に割り当てられることを意味する。

vl[i] = vr[i] = x (x ≠ -1)であるとき、x番目の仕事はi日目に割り当てるしかない。そうでない場合、x番目の仕事は複数の日付に割り当てることができる。よってvl[i] = vr[i] = x (x ≠ -1)となるようなiを出力してゆけばよい。