#2854. 0 or 1 Swap

0
    ID: 2854 传统题 2000ms 1024MiB 尝试: 0 已通过: 0 难度: 1 上传者: 标签>AtCoderabc135BGESP 3级数组枚举(单层循环)

0 or 1 Swap

0 or 1 Swap

题目描述

我们有一个序列 pp = {p1, p2, ..., pNp_1,\ p_2,\ ...,\ p_N},它是 {1, 2, ..., N1,\ 2,\ ...,\ N} 的一个置换。 你最多可以执行下面的操作一次:选择整数 ii 和 jj (1 \leq i < j \leq N),并交换 pip_i 和 pjp_j。注意你也可以选择不执行该操作。 如果你能够通过这种方式将 pp 按升序排序,则输出 YESYES,否则输出 NONO。

输入格式

输入从标准输入按以下格式给出: NN p1p_1 p2p_2 ...... pNp_N

输出格式

如果你能够按照题目中说明的方式将 pp 按升序排序,则输出 YESYES,否则输出 NONO。

5
5 2 3 4 1
YES
5
2 4 3 5 1
NO
7
1 2 3 4 5 6 7
YES

提示

输入中的所有数值都是整数。 2≤N≤502 \leq N \leq 50 pp 是 {1, 2, ..., N1,\ 2,\ ...,\ N} 的一个置换。你可以通过交换 p1p_1 和 p5p_5 将 pp 排序为升序。
在这种情况下,交换任意两个元素都不能将 pp 排序为升序。
pp 已经是升序排列,因此不需要任何操作。

标签: AtCoder|abc135B

来源

AtCoder|abc135B