传统题 文件IO:repair 1000ms 128MiB

修复

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

修复

题目描述

给定一个 1n1\sim n 的排列 pp

你必须选择两个不同的位置 x<yx<y,交换 pxp_xpyp_y,设交换后的排列为 qq。 若对所有 1in1\le i\le n 都有

qqi=iq_{q_i}=i

则称这次交换是合法的。

求合法的二元组 (x,y)(x,y) 数量。

输入格式

从文件 repair.in 读入数据。 第一行一个整数 nn。 第二行 nn 个整数 p1,p2,,pnp_1,p_2,\dots,p_n,保证构成 1n1\sim n 的排列。

输出格式

输出到文件 repair.out。 输出一个整数,表示合法二元组 (x,y)(x,y) 的数量。

样例

输入1

4
1 2 3 4

输出1

6

输入2

4
2 3 4 1

输出2

2

数据规模与约定

对于所有数据:

2n1062\le n \le 10^6

pp1n1\sim n 的排列。

本题采用捆绑测试。只有通过一个子任务中的全部测试点,才能获得该子任务的分数。

测试点 分值 限制 特性
1-1 5 n10n\le 10
2-3 10 原排列已满足 ppi=ip_{p_i}=i
4-6 15 n2×104n\le 2\times 10^4 所有循环长度不超过4
7-10 原排列已满足 ppi=ip_{p_i}=i
11-13
14-16 n106n\le 10^6 原排列已满足 ppi=ip_{p_i}=i
17-20 20

OI模式测试

未参加
状态
已结束
规则
OI
题目
4
开始于
2026-8-18 9:00
结束于
2026-8-18 12:00
持续时间
3 小时
主持人
参赛人数
7