题目名称 | 2071. 复制&粘贴 |
---|---|
输入输出 | copypaste.in/out |
难度等级 | ★★ |
时间限制 | 1000 ms (1 s) |
内存限制 | 256 MiB |
测试数据 | 26 |
题目来源 | cqw 于2015-10-28加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:21, 提交:50, 通过率:42% | ||||
AsongA | 100 | 1.535 s | 6.22 MiB | C++ |
胖周zzf | 100 | 2.291 s | 3.53 MiB | C++ |
NVIDIA | 100 | 2.308 s | 3.56 MiB | C++ |
mikumikumi | 100 | 2.395 s | 3.56 MiB | C++ |
张灵犀不和我一般见识真可怕呢(笑 | 100 | 2.500 s | 3.56 MiB | C++ |
Satoshi | 100 | 2.539 s | 3.37 MiB | C++ |
Shirry | 100 | 2.553 s | 1.92 MiB | C++ |
AAAAAAAAAA | 100 | 2.678 s | 1.93 MiB | C++ |
AAAAAAAAAA | 100 | 2.744 s | 1.93 MiB | C++ |
TARDIS | 100 | 2.778 s | 3.42 MiB | C++ |
本题关联比赛 | |||
20151028a | |||
20151028a | |||
20151028a |
关于 复制&粘贴 的近10条评论(全部评论) | ||||
---|---|---|---|---|
为什么这么慢
AAAAAAAAAA
2017-06-02 20:38
6楼
| ||||
让我粘一下正解
| ||||
Warning为何关闭流与SCANF的同步,原先的字符串操作就不行了,全部E掉。
NVIDIA
2016-03-13 11:15
4楼
| ||||
%%%%% 蒟蒻代码,暴力过部分
| ||||
咋做呢?大牛在哪
| ||||
这真的不是japan的题么。
|
文本编辑器的一个最重要的机能就是复制&粘贴。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 4 3 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,2*10^5)
1<=N<=2*10^5
设第i次操作前的字符串长度为Li,那么0<=Ai<Bi<=Li且0<=Ci<=Li (1<=i<=N)
在此键入。