专栏文章

CF1481E Sorting Books

CF1481E题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miqlinue
此快照首次捕获于
2025/12/04 06:45
3 个月前
此快照最后确认于
2025/12/04 06:45
3 个月前
查看原文
首先有个最简单的观察,被移动的书在序列右侧可以随便排列。
由于和序列后面关联性很强,所以考虑倒序 DP。
fif_i 表示从 iinn 能留下来的最多的书,同时要满足一个条件,即对于某一颜色而言,若左侧还有未被考虑的书,那么已经被考虑的那些书要么都是被移动过的,要么 满足他们右侧没有不移动的书,也就是前面的同色书移动后可以接到它们后面。
转移式很简单,不选直接继承。选的话由于要满足条件,所以如果当前的书是它的同色书中最左侧的一本,那么可以加上右端点后一个位置的 DP 值,如果不是,由于要满足条件,所以除同色书其余的都要移动,转移代码如下。
CPP

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]);

答案即为 nf1n - f_1

评论

0 条评论,欢迎与作者交流。

正在加载评论...