ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

社论:「LibreOJ Round #9」Menci 的序列

社论:「LibreOJ Round #9」Menci 的序列

0

把题解翻译成人话。(?)

1

注意到 +++* 等价,所以先从后往前把所有 *++ 替换成 +* 不劣。

为了处理开头的 +,先在开头加入若干个 * 不影响结果。

然后我们就不使用 ++ 了,也就是规定除了最后一个 +,每个 + 后面必须使用 *

于是不妨把所有的 +* 和最后一个 + 替换为 1,剩下的 * 替换成 0,这样得到了一个 01 串,取它的最大字典序子序列仍然和原问题等价。

以样例为例:

++*++***+

*****++*++***+

替换连续加号:***+*+****+

替换为 01 串:000110001

于是问题为求一个 01 串的最大子序列。

如果 1 的数量 \(\ge k\) 直接取全 1 即可,否则一定会把靠前的 1 尽量推高。

发现答案的形式一定是一堆 1 拼上一个后缀,根据第一个 1 的位置可计算分界线。

2

返回列表