首页 > 其他分享 >P8368 [LNOI2022] 串

P8368 [LNOI2022] 串

时间:2024-01-12 21:35:48浏览次数:33  
标签:LNOI2022 二分 那么 后缀 可以 mid P8368 后面

题面传送门

首先我们可以说明,一定存在一个最优方案,使得最后一个串的右端点是 \(n\)。因为如果不是 \(n\),那么可以往后扩展一个,或者整体前移一位之后再往后扩展一位。

然后我们可以说明,如果后缀 \([i,n]\) 存在一种方案使得其是最后一个,那么 \([j,n](j>n)\) 也存在一种方案。

所以我们可以二分一个 \(mid\),然后 check \(mid\) 可不可行。

设当前区间为 \([l,r]\),那么每次就是 \(l\) 往前移动一位,\(r\) 往前移动 \(2\) 位,当 \(l=1\) 的时候说明不可行。

如果当前区间 \([l,r]\) 之后存在一个与其相同的串,那么就可以跳到后面去,同时我们发现,跳到后面去一定比继续往前走更优,因为如果跳到后面去,那么走到前面的时候一定更短,那么前面往后跳的话也一定能跳。

那么这个二分的 check 就是 \(O(n)\) 的。预处理可以建立 SAM 找到每个后缀和后面的后缀的 LCP 最大值,总复杂度 \(O(n\log n+n|\Sigma|)\)。

等下,这个二分真的有必要吗?在位置 \(i\),若长度 $\leq $ LCP 最大值,则这些长度一定可以循环跳完,那么对于位置 \(i\),其能跳的最长串也就确定了,可以 \(O(n)\) 求出,复杂度 \(O(n|\Sigma|)\)。

submission

标签:LNOI2022,二分,那么,后缀,可以,mid,P8368,后面
From: https://www.cnblogs.com/275307894a/p/17961640

相关文章

  • [LNOI2022] 串
    题目链接显然答案下界为\(\lfloor\frac{n}{2}\rfloor\)。采用一种对着题意模拟的策略:假设我们初始的区间为\([l,r]\),然后逐步向左平移,也就是:\([l,r],[l-1,r-2],[l-2,r-4],\dots\)直到碰到边界(平移的次数\(+1\)就等于\(m\))。显然\(l\)取\(\lfloor\frac{n}{2}\rfloor\),\(r......
  • 洛谷 P8367 - [LNOI2022] 盒(组合数学)
    设\(a\)数组的前缀和为\(s_i\),\(b\)数组的前缀和为\(t_i\),那么根据模拟费用流或者贪心的思想,每一条边经过的次数即为\(|s_i-t_i|\),因此非常trivial的做法是转换贡献体,枚举每种方案下每条边被经过的次数,然后乘以\(w_i\)求和,具体来说:\[ans=\sum\limits_{i=1}^{n-1}\sum\l......
  • luogu P8367 [LNOI2022] 盒
    题面传送门比较厉害的题目。首先我们发现我们只需要计算\(i\)和\(i+1\)之间经过的货物数,也即设\(a\)的前缀和为\(Sum\),\(b\)的前缀和为\(c\),则\(i\toi+1\)......
  • P8368 [LNOI2022] 串 题解
    题目链接题目分析题目要求我们构造一个最长的\(T\)序列,我们首先从每个\(T_i\)入手,思考如何安排才能合法。容易观察到对于每个\(T_i\),合法的\(T_{i-1}\)有两种方......
  • 【题解】[LNOI2022] 盒
    题目分析:我们可以对每一条边单独计算贡献,这样会发现贡献很好算:\[ans=\sum_{i=0}^{n-1}w_i\sum_{j=0}^S|j-s_i|\binom{i+j-1}{i-1}\binom{S-j+n-i-1}{n......