【題解】AGC003E Sequential operations on Sequence
阿新 • • 發佈:2021-10-02
首先如果 $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$ 意思就是問整
迴圈若干次,然後接上一塊字首的結果。
首先如果 \(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)\) 。