Cut and Paste - #607 div2 c
#文字列
解法
例
s = 231
231
23131
23131131131
...
となるが,
まず prefix がどの文字列でも同じことに注目
よって, 付け加えるだけ
また, cut で s の末尾の数が必要だが, せいぜい以下
x 文字以上を構成する必要はないことを, 以下, editorial の補足で示す
editorialの補足
例
= 231
mode で, l = 1
cut で, s = 2, = 31
s の末尾()の 2 回, paste して, = 23131
言い換えると, = 231 に 2 - 1 = 1 回, 31をつける
長さでいうと,
t - 1 番目の文字列の長さ | | から t 番目の文字列の長さ | | を求める
(1) より, t 番目の文字列を求める必要はないことがわかる
を s, c に cut したとき, | | と | s | から | c | がわかる
ポイント
時間計算量がO(N^2)にならないこと
ある長さの文字列をsに付け加えていく
その付け加える文字列の取得, それを何回か s に付け加えるのは並列である
取得や貼り付けの長さは合計以下
よって O(N)