A7707 | Reverse Permutation
时间限制2s
内存限制1024MB
通过 / 提交0/0
题目描述
给你一个整数 $N$ 和一个长度为 $N$ 的字符串 $S$,其中只包含字符
有一个长度为 $N$ 的整数序列 $A=(A_1,A_2,\ldots,A_N)$。初始时,$A=(1,2,\ldots,N)$。
按 $k=1,2,\ldots,N$ 的顺序,对 $A$ 执行如下操作:
* 若 $S_k=$
* 若 $S_k=$
求所有操作执行完毕后的 $A$。
o 和 x。有一个长度为 $N$ 的整数序列 $A=(A_1,A_2,\ldots,A_N)$。初始时,$A=(1,2,\ldots,N)$。
按 $k=1,2,\ldots,N$ 的顺序,对 $A$ 执行如下操作:
* 若 $S_k=$
o,则将 $A$ 的前 $k$ 项翻转。具体而言,将 $A$ 替换为 $(A_k,A_{k-1},\ldots,A_1,A_{k+1},A_{k+2},\ldots,A_N)$。* 若 $S_k=$
x,则不进行任何操作。求所有操作执行完毕后的 $A$。
输入格式
输入从标准输入中以如下格式给出:
> $N$
> $S$
> $N$
> $S$
输出格式
输出所有操作完成后数组 $A$ 的各元素,元素之间用空格分隔。
输入输出样例
输入 #1
5 ooxoo
输出 #1
5 2 1 3 4
输入 #2
7 ooooooo
输出 #2
7 5 3 1 2 4 6
输入 #3
15 xooxoxoxoxoxxoo
输出 #3
15 11 10 7 6 3 1 2 4 5 8 9 12 13 14
**样例 1 解释:**
$A$ 在每次操作后变化如下:
* 当 $k=1$ 时:将 $A$ 的前 $1$ 项反转。$A$ 变为 $(1,2,3,4,5)$。
* 当 $k=2$ 时:将 $A$ 的前 $2$ 项反转。$A$ 变为 $(2,1,3,4,5)$。
* 当 $k=3$ 时:不执行任何操作。
* 当 $k=4$ 时:将 $A$ 的前 $4$ 项反转。$A$ 变为 $(4,3,1,2,5)$。
* 当 $k=5$ 时:将 $A$ 的前 $5$ 项反转。$A$ 变为 $(5,2,1,3,4)$。
所有操作完成后,$A = (5,2,1,3,4)$。
### 约束条件
* $2\le N\le 5\times 10^5$
* $N$ 是整数。
* $S$ 是一个长度为 $N$ 的字符串,仅由字符
$A$ 在每次操作后变化如下:
* 当 $k=1$ 时:将 $A$ 的前 $1$ 项反转。$A$ 变为 $(1,2,3,4,5)$。
* 当 $k=2$ 时:将 $A$ 的前 $2$ 项反转。$A$ 变为 $(2,1,3,4,5)$。
* 当 $k=3$ 时:不执行任何操作。
* 当 $k=4$ 时:将 $A$ 的前 $4$ 项反转。$A$ 变为 $(4,3,1,2,5)$。
* 当 $k=5$ 时:将 $A$ 的前 $5$ 项反转。$A$ 变为 $(5,2,1,3,4)$。
所有操作完成后,$A = (5,2,1,3,4)$。
### 约束条件
* $2\le N\le 5\times 10^5$
* $N$ 是整数。
* $S$ 是一个长度为 $N$ 的字符串,仅由字符
o 和 x 组成。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?