1. 程式人生 > 其它 >【題解】AGC003E Sequential operations on Sequence

【題解】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$ 意思就是問整

首先如果 \(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