CF1481E Sorting Books
首先有个最简单的观察,被移动的书在序列右侧可以随便排列。
由于和序列后面关联性很强,所以考虑倒序 DP。
设
转移式很简单,不选直接继承。选的话由于要满足条件,所以如果当前的书是它的同色书中最左侧的一本,那么可以加上右端点后一个位置的 DP 值,如果不是,由于要满足条件,所以除同色书其余的都要移动,转移代码如下。
cnt[col[i]] ++ ;
f[i] = f[i + 1];
f[i] = max(f[i], cnt[col[i]]);
if (i == Left[col[i]])
f[i] = max(f[i], cnt[w[i]] + f[Right[col[i]] + 1]);
答案即为