4017 複製 貼上(copypaste)

2021-09-27 04:11:58 字數 1993 閱讀 1176

題目描述

文字編輯器的乙個最重要的機能就是複製&貼上。joi社現在正在開發一款能夠非常高速地進行複製&貼上的文字編輯器,作為joi社一名優秀的程式猿,你擔負起了複製&貼上功能的測試這一核心工作。整個joi社的命運都系在你的身上,因此你無論如何都想寫出乙個正確且高速的程式來完成這項工作。

具體的做法如下所示。檔案的內容是乙個字串s,對其進行n次複製&貼上的操作,第i次操作複製位置ai和位置bi之間的所有文字,然後在位置ci貼上。這裡位置x表示字串的第x個字元的後面那個位置(位置0表示字串的開頭),例如字串」copypaste」的位置6表示字元』a』和字元』s』之間的位置,位置9表示』e』後面的位置(即字串的結尾)。不過,如果操作後的字串長度超過了m,那麼將超過的部分刪除,只保留長度為m的字首。

你的任務是寫乙個程式,輸出n次操作後字串的前k個字元。

輸入格式

第一行兩個空格分隔的正整數k和m,表示最終輸出的文字數量和字串長度的上限。

第二行乙個字串s,表示初始的字串。

第三行乙個整數n,表示操作的次數。

接下來n行,第i行包含三個空格分隔的整數ai,bi,ci,表示第i次操作將位置ai到bi之間的字串複製,然後貼上到位置ci。

輸出格式

輸出一行乙個長度為k的字串,表示最終的字串的長度為k的字首。

樣例樣例輸入

2 18

copypaste

43 6 8

1 5 2

4 12 1

17 18 0

樣例輸出

ac資料範圍與提示

【樣例解釋】

初始的字串為」copypaste」。

第一次操作將從位置3到位置6的字串」ypa」複製,插入位置8,得到字串」copypastypae」

第二次操作將從位置1到位置5的字串」opyp」複製,插入位置2,得到字串」coopyppypastypae」

第三次操作將從位置4到位置12的字串」yppypast」複製,插入位置1,得到字串」cyppypastoopyppypastypae」,由於長度超過了m=18,刪除超過的部分,得到」cyppypastoopyppypa」

第四次操作將從位置17到位置18的字串」a」複製,插入位置0,得到字串」acyppypastoopyppypa」,刪除超過18的部分得到」acyppypastoopyppyp」

最後輸出長度為2的字首」ac」即為答案。

【資料範圍與約定】

對於40%的資料,n,m<=2000

對於100%的資料:1<=k<=200,1<=m<=10^9

s的每個字元都是小寫字母(『a』~』z』),k<=|s|<=min(m,210^5)

1<=n<=210^5,設第i次操作前的字串長度為li,那麼0<=ai**

joi camp 2015

題解:注意到k很小,所以我們可以大膽推測時間複雜度應該是o(nk);

同時最後生成的所有字元都是來自於初始字串,

由此可以得出我們可以逆著推

設f[i][j]表示最終字串中第j個字元在第i步後的字串的位置。

這樣就只用分三類討論,倒推回去。

#include

#include

#include

#include

#include

#define n 200005

using namespace std;

int f[n]

[205

],n,k,m;

string str;

struct node

op[n]

;int

main()

for(

int j=

1;j<=k;j++)if

(c+(b-a)

[j])

f[i-1]

[j]=a+f[i]

[j]-c;

} cout<[j]-1]

;}cout

}

VIM複製貼上

vim作為最好用的文字編輯器之一,使用vim來編文件,寫 實在是很愜意的事情。每當學會了vim的乙個新功能,就會很大地提高工作效率。有人使用vim幾十年,還沒有完全掌握vim的功能,這也說明了vim的強大。而這樣何嘗不是一件好事呢,只要有的學習,就有的提高。最近使用vim來寫部落格,發現在vim中貼...

vim 複製貼上

傳統軟體的複製 copy 剪下 cut 貼上 paste 在vim中對應的是yank,delete和put。在vim中的複製,刪除,替換等操作的臨時內容,都會儲存在暫存器中。下面分享下vim中的暫存器和相關的基本的操作。無名暫存器 兩個雙引號,vim中叫做無名暫存器。x,s,d,c,y等操作,如果不...

複製 貼上2

文字編輯器的乙個最重要的機能就是複製 貼上。joi社現在正在開發一款能夠非常高速地進行複製 貼上的文字編輯器,作為joi社一名優秀的程式猿,你擔負起了複製 貼上功能的測試這一核心工作。整個joi社的命運都系在你的身上,因此你無論如何都想寫出乙個正確且高速的程式來完成這項工作。具體的做法如下所示。檔案...