【题解】AGC003E Sequential operations on Sequence
作者:互联网
首先如果 \(q_i\geq q_{i+1}\) 那么 \(q_i\) 没用可以不管,剩下的是一个递增序列。
注意到 \(S_i\) 是 \(S_{i-1}\) 重复 \(\lfloor\frac{|S_{i-1}|}{|S_i|}\rfloor\) 后,再接上 \(S_{i-1}\) 长为 \(|S_i|\bmod |S_{i-1}|\) 的前缀得到的。前一部分很好处理,至于剩下的一部分,假设长度为 \(len\) 。
注意到这个 \(len\) 意思就是问整个序列的前 \(len\) 个,找到最大的不超过 \(len\) 的 \(q_j\),那么前 \(len\) 个,就是由 \(q_j\) 循环若干次,然后接上一块前缀的结果。
这个可以直接递归处理,注意到递归层数是 \(\log q\) 级别的。接的前缀单独处理,剩下的倒推即可,时间复杂度 \(O(n\log n\log q)\) 。
代码:Submission #26269721 - AtCoder Grand Contest 003
标签:log,递归,接上,题解,len,AGC003E,剩下,Sequential,前缀 来源: https://www.cnblogs.com/qiulyqwq/p/15362382.html