#P4089. 奶牛洗牌(The Bovine Shuffle S)

0

奶牛洗牌(The Bovine Shuffle S)

奶牛洗牌(The Bovine Shuffle S)

题目描述

Farmer John 坚信快乐的奶牛能产更多的奶,因此他在谷仓里安装了一个巨大的迪斯科球,并计划教他的奶牛跳舞!

在查阅了流行的奶牛舞蹈后,Farmer John 决定教他的奶牛“Bovine Shuffle”。Bovine Shuffle 包括他的 NN 头奶牛(1≤N≤100,0001 \leq N \leq 100,000)以某种顺序排成一行,然后进行连续的“洗牌”,每次洗牌可能会重新排列奶牛的顺序。为了让奶牛更容易找到自己的位置,Farmer John 为他的奶牛队伍标记了位置 1…N1 \ldots N,因此队伍中的第一头奶牛位于位置 1,第二头位于位置 2,依此类推,直到位置 NN。

一次洗牌由 NN 个数字 a1…aNa_1 \ldots a_N 描述,其中位于位置 ii 的奶牛在洗牌期间移动到位置 aia_i(因此,每个 aia_i 都在 1…N1 \ldots N 范围内)。每头奶牛在洗牌期间都会移动到它的新位置。不幸的是,所有的 aia_i 不一定互不相同,因此多只奶牛可能会在洗牌期间尝试移动到同一位置,之后它们将在所有剩余的洗牌中一起移动。

Farmer John 注意到,无论进行多少次洗牌,他的队伍中某些位置始终会有奶牛。请帮助他计算这样的位置数量。

输入格式

输入的第一行包含 NN,表示奶牛的数量。第二行包含 NN 个整数 a1…aNa_1 \ldots a_N。

输出格式

请输出无论进行多少次洗牌,始终会有奶牛的位置数量。

样例输入 #1

4
3 2 1 3

样例输出 #1

3

数据范围

请使用高效率算法及 64 位整数(long long)避免溢出。

知识点与难度

本题涉及的知识点从属于 CSP-S,难度(CF Rating):1300。


测试点分布

Subtask 分值 测试点编号 说明
0 10 1 样例
1 25 2~8 小规模与边界测试数据
2 30 9~16 中等规模测试数据
3 35 17~25 满规模极限测试数据

出处:原题链接