AtCoder Regularr Contest 133 B 問題 Dividing Subsequence
問題
提出解答
問題の概要
から の並び替え が与えられる. 以下を満たすような整数列 における長さの最大値を求めよ.
制約
- は の並び替え.
解法
動的計画法を考える. を第 項目までみて, 特に と をマッチングさせるような取り出し方のうちの長さの最大値をする.
ベースケースは で, 更新式は
である.
このとき, 答えは である.
ここで, において, ならば, であるから, in-place に更新することによって, 動的計画法の配列は に関する情報のみでよい.
そして, となる の組の数は, 調和級数から, である.
また, 更新式は を固定するごとに, の区間における最大値を求めることになる.
よって, Segment Tree を利用することにより, 計算量 で求めることができた.