CF2030D.QED's Favorite Permutation
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
你有一个长度为 n 的排列 p,也就是说,1 到 n 中的每个正整数都在 p 中出现恰好一次。同时你还有一个长度也为 n 的字符串 s,其中仅含 L 和 R 两种字符。(排列和字符串的下标均从 1 开始编号)
定义一次操作为:任意选择一个编号 i(1≤i≤n),在这之后:
-
如果 si 为
L,则交换 pi 和 pi−1。(保证 s1 不为L) -
如果 si 为
R,则交换 pi 和 pi+1。(保证 sn 不为R)
接下来给出 q 次询问,在第 i 次询问中(1≤i≤q),你将会得到一个编号 xi(1≤xi≤n),表示如果 sxi 为 L,则你需要将其改为 R;反之如果 sxi 为 R,则你需要将其改为 L。在修改完成之后,你还需要判断能否通过上述操作使得排列 p 单调递增(操作次数不限),即对任意的 1≤i≤n−1,都有 pi<pi+1。
询问中对字符串 s 的修改均为永久性的,会在询问结束后保留。在回答询问的过程中,你不应对排列 p 进行任何真实的操作。
输入格式
第一行一个正整数 t(1≤t≤104),表示测试数据的组数。对于每组测试数据而言:
第一行包含两个正整数 n,q(1≤n,q≤2×105,n≥3),分别表示排列的长度和询问的次数。
第二行包含 n 个正整数 p1,p2,...,pn(1≤pi≤n),表示排列 p。
第三行包含一个长度为 n 的字符串 s,保证 si∈{L,R},s1=R,sn=L。
接下来 q 行,其中第 i 行包含一个正整数 xi(1≤xi≤n),表示要修改的字符的编号。
保证所有测试数据中 n 和 q 的总和都不超过 2×105。
输出格式
对于每个询问,在单独一行输出一个字符串表示答案。如果在修改完成之后能通过上述操作使得排列 p 单调递增(操作次数不限),则输出 YES;否则输出 NO。评测时不区分大小写,例如 Yes,yES 等均被认为与 YES 等价。
【样例解释】
对于第一组测试数据,在第一次询问之后,s=RRRLL。我们可以通过如下操作序列使得排列 p 单调递增:
-
初始时,p=[1,4,2,5,3]。
-
选择 i=2 进行一次操作,由于 s2=R,所以我们交换 p2 和 p3,得到 p=[1,2,4,5,3]。
-
选择 i=5 进行一次操作,由于 s5=L,所以我们交换 p5 和 p4,得到 p=[1,2,4,3,5]。
-
选择 i=4 进行一次操作,由于 s4=L,所以我们交换 p4 和 p3,得到 p=[1,2,3,4,5]。此时,排列 p 已经单调递增。
因此,对于第一次询问你应当输出 YES。
对于第一组测试数据可以证明,在三次询问对字符串 s 的修改完成之后,不可能再通过上述操作使得排列 p 单调递增。因此,对于第三次询问你应当输出 NO。
Translated by FruitWasTaken
输入输出样例
输入#1
3 5 3 1 4 2 5 3 RLRLL 2 4 3 8 5 1 5 2 4 8 3 6 7 RRLLRRRL 4 3 5 3 4 6 2 1 2 3 4 5 6 RLRLRL 4 5
输出#1
YES YES NO NO YES NO NO NO YES YES
输入解题思路,AI测评打分。不知道怎么写?