A5078 | 午枫的字符串修改
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
定义 $M(c,x)$ 为将字符 $c$ 循环右移后得到的字符,例如 $M(b,2)=d$ ,$M(x,4)=b$ 。
再定义 $C(t,x)$ 为将字符串 $t$ 向右循环移动后得到的字符串,例如 $C(abc,1)=cab$ ,$C(abcde,4)=bcdea$ 。
小枫又有一个长度为 $n$ 的字符串 $s$ ,小午又把小枫的字符串修改了,这次小午对小枫的字符串修改了 $q$ 次,每次修改会进行以下操作中的一种:
再定义 $C(t,x)$ 为将字符串 $t$ 向右循环移动后得到的字符串,例如 $C(abc,1)=cab$ ,$C(abcde,4)=bcdea$ 。
小枫又有一个长度为 $n$ 的字符串 $s$ ,小午又把小枫的字符串修改了,这次小午对小枫的字符串修改了 $q$ 次,每次修改会进行以下操作中的一种:
- 选择三个正整数 $l,r$ $(1\leq l\leq r\leq n)$ 和 $x$ ,设当前字符串为 $t$ ,将 $t_l,t_{l+1},\dots ,t_r$ 变为 $M(t_i,x)$ ;
- 选择一个正整数 $x$ ,将当前字符串 $t$ 变为 $C(t,x)$ 。
输入格式
第一行输入一个正整数 $n$ $(1\leq n \leq10^6)$ ,表示字符串长度。
第二行输入一个长度为 $n$ 的字符串 $s$ ,表示初始字符串,保证 $s$ 只包含小写英文字母。
第三行输入一个正整数 $q$ $(1\leq q\leq 2\times 10^5)$ ,表示操作次数。
接下来 $q$ 行,每行先输入一个正整数 $op$ $(op\in\{1,2\})$ ,
若 $op=1$ ,接下来输入三个正整数 $l,r,x$ $(1\leq l\leq r\leq n,1\leq x\leq10^9)$ ,意义同题面所述;
若 $op=2$ ,接下来输入一个正整数 $x$ $(1\leq x\leq 10^9)$ ,意义同题面所述。
第二行输入一个长度为 $n$ 的字符串 $s$ ,表示初始字符串,保证 $s$ 只包含小写英文字母。
第三行输入一个正整数 $q$ $(1\leq q\leq 2\times 10^5)$ ,表示操作次数。
接下来 $q$ 行,每行先输入一个正整数 $op$ $(op\in\{1,2\})$ ,
若 $op=1$ ,接下来输入三个正整数 $l,r,x$ $(1\leq l\leq r\leq n,1\leq x\leq10^9)$ ,意义同题面所述;
若 $op=2$ ,接下来输入一个正整数 $x$ $(1\leq x\leq 10^9)$ ,意义同题面所述。
输出格式
输出一行一个字符串,表示 $q$ 次操作后得到的最终字符串。
输入输出样例
输入 #1
5 aaaaa 5 1 1 5 2 2 4 1 2 3 1 2 3 1 4 5 3
输出 #1
dccfg
第一次操作后,字符串变为
第二次操作后,字符串变为
第三次操作后,字符串变为
第四次操作后,字符串变为
第五次操作后,字符串变为
ccccc 。第二次操作后,字符串变为
ccccc 。第三次操作后,字符串变为
cddcc。第四次操作后,字符串变为
dcccd。第五次操作后,字符串变为
dccfg。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?