CSAcademy Round #26 (Div. 2 only) E. Critical Cells
リンク
https://csacademy.com/contest/archive/task/critical-cells/
問題概要
のグリッド上に個の特別なセルが存在する。
いまからまで右方向と下方向のみを使って移動するとき、できるだけ多くの特別なセルを経由したい。
次の状態を満たすような特別なセルをと定義する。
ある任意の特別なセルを1つ選んで削除したとき、特別なセルの最大経由数が小さくなる。
このときな特別なセルの個数を求めよ。
制約
解法
まずセルを削除しない場合の最大経由数を求める。
下と右方向にしかできないことから、のような列を考えたとき、 及び を満たせばよい。
これはx軸方向にソートしたときのy軸方向についての広義単調増加列(LIS)に一致する。
次にLISに含まれる候補が複数ある場合、特別なセルを削除しても最大経由数が変化しない場合があるためどの点がLISの候補なのかを求める。
LISの長さは逆順から見たときの広義単調減少列(LDS)の長さに一致することから、先頭と後ろからLIS(LDS)を求めて、についてがLISの長さに一致するならば、候補に含まれることが言える。
(LISの求め方としては蟻本に載ってるような方法がありますが、セグ木を使うとLIS、LDSの両方について区間を変更するだけで簡単に求まるのでよいと思います。)
あとはある長さについて候補が1つだけのものをカウントすれば答えに一致する。