Loading

【题解】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

posted @ 2021-10-02 18:19  Qiuly  阅读(42)  评论(0编辑  收藏  举报