#2963. 前缀或者翻转
前缀或者翻转
题目描述
你有一个数组 ,你可以对该数组执行任意次下述两种操作:
- 操作一:对该数组进行前缀和操作,即对 ,依次执行 ;
- 操作二:翻转该数组一次,即对于 ,交换 和 。
问是否可能把 数组变成 数组。 如果存在多种方式的话,请优先保证操作一执行的次数尽量少。
在某些情况下,我们不仅仅满足知道存在性即可,并且要求你给出一种可能的操作序列(具体输出请参考输出格式)。
多组数据输入。
输入格式
第一行输入一个数 ,表示 组测试数据:
每组数据第一行输入 1 个数 。 接下来一行输入 个数表示 。 接下来一行输入 个数表示 。 最后一行有一个数 , 等于 0 则表示只需要输出操作一的最小执行次数, 等于 1 则表示还需要输出方案。
输出格式
对于每组数据:
如果不可能通过有限次操作把数组 变成 ,则输出 -1。
否则输出一行 表示需要最少的操作一的次数。
对于 等于 1 的情况,你还需要输出一行仅由 R
和 P
组成的字符串表示变化过程,其中:
R
表示执行翻转操作;P
表示执行前缀和操作。
要求输出的字符串长度不超过 500000,且恰好有 个 P
,如果有多种操作序列,可以输出任意一种操作序列。
输入保证当 等于 1 的时候,答案 。
样例
输入样例 1
2
2
5 7
5 7
0
2
10 1
13 14
1
输出样例 1
0
4
RPPPRP
输入样例 2
2
2
1 1
300000 1
0
3
1 2 1
2 1 2
0
输出样例 2
299999
-1
提示
、 | 分数占比 | |||
---|---|---|---|---|
<= 10 | = 2 | = 0 | 16 | |
24 | ||||
<=200000 | = 0 | 28 | ||
32 |
统计
相关
在下列比赛中: