2271. Day5 B - aeitCS 的打字机

aeitCS 有一台打字机。

初始时打字机中只有一行字符串 \a/\e/\i/\t/\C/\S/ ,其序号为 1

它支持若干种操作。指令格式形如一/两个确定的数字,再加上若干个变量,变量可能是数字、字符、字符串。

下面是详细描述:

一、插入操作:

插入一个序号为目前打字机内字符串数目 +1 的字符串。

  • 1 1 表示插入一个空字符串。
  • 1 2 s 表示插入一个字符串 s
  • 1 3 c n 表示插入字符 c 复制 n 次构成的字符串。

  • 1 4 s n 表示插入字符串 s 从第 n 位开始一直到结尾的部分。

  • 1 5 s l r 表示插入字符串 s 从第 l 位到第 r 位的部分。
  • 1 6 i 表示插入序号为 i 的字符串。
  • 1 7 s 表示插入一个内含空格的字符串 s

二、删除操作:

删去指定的一些字符串,之后所有未被删去的字符串的序号会减去被删去且原先序号比它小的字符串的数目

  • 2 1 i 表示将序号为 i 的字符串删除。
  • 2 2 s 表示将所有为 s 的字符串删除。
  • 2 3 s 表示将所有字典序比 s 小的字符串删除。
  • 2 4 s 表示将所有字典序比 s 大的字符串删除。

三、交换操作:

  • 3 i j 表示交换序号为 i,j 的字符串。

四、修改操作:

  • 4 1 i c 表示在序号为 i 的字符串末尾插入字符 c
  • 4 2 i p c 表示在序号为 i 的字符串的第 p 位插入字符 c
  • 4 3 i 表示删去序号为 i 的字符串末尾的字符。
  • 4 4 i p 表示删去序号为 i 的字符串第 p 位的字符。
  • 4 5 i s 表示在序号为 i 的字符串末尾插入字符串 s

  • 4 6 i p s 表示在序号为 i 的字符串的第 p 位插入字符串 s

  • 4 7 i l r 表示删去序号为 i 的字符串第 l 位到第 r 位的部分。
  • 4 8 i l r s 表示将序号为 i 的字符串第 l 位到第 r 位的部分替换成字符串 s

五、查询操作:

  • 5 1 表示查询当前打字机中的字符串数目。

  • 5 2 i 表示查询序号为 i 的字符串。

  • 5 3 i s 表示查询序号为 i 的字符串中,字符串 s 的出现次数以及每次出现的结束位置。

输入

第一行输入一个正整数 q (1 \leq q \leq 500),表示指令个数。

随后 q 行每行一句指令,格式详见题面描述或样例。

数据保证任何时刻最长的字符串长度不超过 500

数据保证除指令 1 7 s 之外的字符/字符串不含空格。

数据保证所有字符/字符串仅涉及数字、大小写字母、下划线、空格、左右斜杠五种字符。

数据保证不会对不存在的字符串进行操作,不会删除不存在的字符。

注意操作 4 2 i p c4 4 i p4 6 i p s 中的 p 可能为序号为 i 的字符串的长度 +1,代表直接插入在其末尾。

输出

对于每个查询指令都有一行输出。

若查询指令形如 5 1 ,则输出一行一个非负整数表示当前打字机中的字符串数目。

若查询指令形如 5 2 i ,则输出一行一个字符串表示序号为 i 的字符串(该串可能是空串)。

若查询指令形如 5 3 i s ,则输出一行若干个非负整数:

其中第一个非负整数 m 代表序号为 i 的字符串中,字符串 s 的出现次数。

随后 m 个正整数依次是字符串 s 在序号为 i 的字符串中从小到大的出现位置。

m+1 个非负整数中间均用一个空格隔开。

样例

标准输入 复制文本
44
1 1
1 2 CReatiQ
5 2 3
5 2 2
1 3 k 7
5 2 4
1 4 Kan_kiz 4
5 2 5
1 5 Lacrymabre 3 8
5 2 6
1 6 1
5 2 7
1 7 Are u right?
5 2 8
2 1 4
5 2 7
2 2 \a/\e/\i/\t/\C/\S/
5 2 5
2 3 \
5 2 2
2 4 d
5 2 2
3 1 2
5 2 2
4 1 2 _
5 2 2
4 2 1 1 a
5 2 1
4 3 1
5 2 1
4 4 2 1
5 2 2
4 5 2 Kan
5 2 2
4 6 2 8 _kiz
5 2 2
4 7 1 2 5
5 2 1
4 8 2 1 3 CReatiQ
5 2 2
4 1 1 a
5 3 1 aa
1 1
5 1
标准输出 复制文本
CReatiQ

kkkkkkk
_kiz
crymab
\a/\e/\i/\t/\C/\S/
Are u right?
Are u right?
Are u right?
crymab
crymab
_kiz
_kiz_
acrymab
acryma
kiz_
kiz_Kan
kiz_Kan_kiz
aa
CReatiQ_Kan_kiz
2 2 3
3

提示

样例解释
操作(前两位为操作类型)操作解释输出状态打字机状态
- 初始情况 -1 号字符串:\a/\e/\i/\t/\C/\S/\a/\e/\i/\t/\C/\S/
\text{(1 1)}插入 2 号空字符串:\a/\e/\i/\t/\C/\S/
(空串)
\text{(1 2 }CReatiQ\text{)}插入 3 号字符串: CReatiQ\a/\e/\i/\t/\C/\S/
(空串)
CReatiQ
\text{(5 2 3)}查询 3 号字符串CReatiQ
\text{(5 2 2)}查询 2 号字符串(空串)
\text{(1 3 }k\text{ 7)}插入 4 号字符串( k 重复 7 次 ): kkkkkkk\a/\e/\i/\t/\C/\S/
(空串
CReatiQ
kkkkkkk
\text{(5 2 4)}查询 4 号字符串kkkkkkk
\text{(1 4 }Kan_kiz\text{ 4)}插入 5 号字符串( Kan_kiz 从第 4 位开始 ): _kiz\a/\e/\i/\t/\C/\S/
(空串)
CReatiQ
kkkkkkk
_kiz
\text{(5 2 5)}查询 5 号字符串_kiz
\text{(1 5 }Lacrymabre\text{ 3 8)}插入 6 号字符串( Lacrymabre3\sim 8 位 ): crymab\a/\e/\i/\t/\C/\S/
(空串)
CReatiQ
kkkkkkk
_kiz
crymab
\text{(5 2 6)}查询 6 号字符串crymab
\text{(1 6 1)}插入 7 号字符串( 取 1 号字符串 ):\a/\e/\i/\t/\C/\S/\a/\e/\i/\t/\C/\S/
(空串)
CReatiQ
kkkkkkk
_kiz
crymab
\a/\e/\i/\t/\C/\S/
\text{(5 2 7)}查询 7 号字符串\a/\e/\i/\t/\C/\S/\a/\e/\i/\t/\C/\S/
(空串)
CReatiQ
kkkkkkk
_kiz
crymab
\a/\e/\i/\t/\C/\S/
\text{(1 7 }Are u right?\text{)}插入 8 号字符串( 这个字符串中含有空格 ):Are u right?\a/\e/\i/\t/\C/\S/
(空串)
CReatiQ
kkkkkkk
_kiz
crymab
\a/\e/\i/\t/\C/\S/
Are u right?
\text{(5 2 8)}查询 8 号字符串Are u right?
\text{(2 1 4)}4 号字符串删除( 5 ~ 8 号字符串编号变为 4 ~ 7\a/\e/\i/\t/\C/\S/
(空串)
CReatiQ
_kiz
crymab
\a/\e/\i/\t/\C/\S/
Are u right?
\text{(5 2 7)}查询 7 号字符串Are u right?
\text{(2 2 }\a/\e/\i/\t/\C/\S/\text{)}删除所有字符串 \a/\e/\i/\t/\C/\S/ (这里删去了 1 号字符串和 6 号字符串,2 ~ 5,7 号字符串编号变为 1 ~ 4,5,后续操作不再对编号变换作解释 )(空串)
CReatiQ
_kiz
crymab
Are u right?
\text{(5 2 5)}查询 5 号字符串Are u right?
\text{(2 3 }\\text{)}删除字典序比 \ 小的字符串_kiz
crymab
\text{(5 2 2)}查询 2 号字符串crymab
\text{(2 4 }d\text{)}删除字典序比 d 大的字符串_kiz
crymab
\text{(5 2 2)}查询 2 号字符串crymab
\text{(3 1 2)}交换 1 号和 2 号字符串crymab
_kiz
\text{(5 2 2)}查询 2 号字符串_kiz
\text{(4 1 2 }_\text{)}2 号字符串结尾加上 _crymab
_kiz_
\text{(5 2 2)}查询 2 号字符串_kiz_
\text{(4 2 1 1 }a\text{)}1 号字符串的第 1 位插入 aacrymab
_kiz_
\text{(5 2 1)}查询 1 号字符串acrymab
\text{(4 3 1)}删除 1 号字符串末尾的字符acryma
_kiz_
\text{(5 2 1)}查询 1 号字符串acryma
\text{(4 4 2 1)}删除 2 号字符串的第 1 个字符acryma
kiz_
\text{(5 2 2)}查询 2 号字符串kiz_
\text{(4 5 2 }Kan\text{)}2 号字符串末尾插入字符串 Kanacryma
kiz_Kan
\text{(5 2 2)}查询 2 号字符串kiz_Kan
\text{(4 6 2 8 }_kiz\text{)}2 号字符串的第 8 位插入字符串 _kizacryma
kiz_Kan_kiz
\text{(5 2 2)}查询 2 号字符串kiz_Kan_kiz
\text{(4 7 1 2 5)}删除 1 号字符串的第 2 \sim 5aa
kiz_Kan_kiz
\text{(5 2 1)}查询 1 号字符串aa
\text{(4 8 2 1 3 }CReatiQ\text{)}2 号字符串的第 1 \sim 3 位替换成 CReatiQaa
CReatiQ_Kan_kiz
\text{(5 2 2)}查询 2 号字符串CReatiQ_Kan_kiz
\text{(4 1 1 }a\text{)}1 号字符串末尾插入字符 aaaa
CReatiQ_Kan_kiz
\text{(5 3 1 }aa\text{)}查询 1 号字符串中,aa 出现的次数以及出现的结束位置2 2 3
\text{(1 1)}插入 3 号空字符串:aaa
CReatiQ_Kan_kiz
(空串)
\text{(5 1)}查询字符串数量3

登录以提交代码。
单点时限 1 秒
内存限制 128 MB
提交 34
通过 5