首页 > TAG信息列表 > bzoj4310
bzoj4310 跳蚤
思路是这样的 我们考虑二分答案串 然后对于每个后缀,找到最近的至少要切割的位置 大概转化出来就是叫你在 [l,r] 内必须切一刀 (这个都会吧) 关键在于怎么二分。 理论上本质不同的子串只有 o(n^2) 个,但是暴力对每个子串排序的复杂度非常高 所以二分排名。 那么考虑在 sa 数组中BZOJ4310 跳蚤
跳蚤 给定一个字符串 \(S\),你需要将它分成不超过 \(m\) 个连续子串,使得分割后的所有串的子串中字典序最大的尽量小 \(|S| ≤ 10^5\) 题解 考虑二分答案,可以二分最大的那个子串,然后用后缀树求出。 从后往前,只要不需要切断,就不切断,切断的判断很容易用判 LCP 实现。 最后 check 断点跳蚤[BZOJ4310]
【题目描述】 很久很久以前,森林里住着一群跳蚤。一天,跳蚤国王得到了一个神秘的字符串,它想进行研究。首先,他会把串分成不超过 \(k\) 个子串,然后对于每个子串 \(S\),他会从\(S\)的所有子串中选择字典序最大的那一个,并在选出来的 \(k\) 个子串中选择字典序最大的那一个。他称其为“魔