专栏文章
CF1481E Sorting Books
CF1481E题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqlinue
- 此快照首次捕获于
- 2025/12/04 06:45 3 个月前
- 此快照最后确认于
- 2025/12/04 06:45 3 个月前
首先有个最简单的观察,被移动的书在序列右侧可以随便排列。
由于和序列后面关联性很强,所以考虑倒序 DP。
设 表示从 到 能留下来的最多的书,同时要满足一个条件,即对于某一颜色而言,若左侧还有未被考虑的书,那么已经被考虑的那些书要么都是被移动过的,要么
满足他们右侧没有不移动的书,也就是前面的同色书移动后可以接到它们后面。
转移式很简单,不选直接继承。选的话由于要满足条件,所以如果当前的书是它的同色书中最左侧的一本,那么可以加上右端点后一个位置的 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]);
答案即为 。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...