题单练习 挑战赛 普及/提高- 题

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$ 次,每次修改会进行以下操作中的一种:

  • 选择三个正整数 $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)$ ,意义同题面所述。

输出格式

输出一行一个字符串,表示 $q$ 次操作后得到的最终字符串。

输入输出样例

输入 #1
5
aaaaa
5
1 1 5 2
2 4
1 2 3 1
2 3
1 4 5 3
输出 #1
dccfg
C++ 编辑器
输入
输出