2018USACO银级第三题(翻译)

https://www.360docs.net/doc/5417030549.html,

2017USACO银级第三题

Bovine Shuffle

农夫John确信快乐的奶牛能产出更多的牛奶,所以他在他的谷仓里装了一个巨大的迪斯科球,并打算教他的奶牛跳舞!

农夫John在看了很多流行的奶牛舞后,决定教他的奶牛跳“Bovine Shuffle"。“Bovine Shuffle"需要他的N只牛(1 ≤ N ≤ 100,000)按顺序排成一排,依次进行“Shuffle(洗牌)”这个动作,也就是轮换位置,每一次都有可能重新打乱奶牛的顺序重新排列。为了让奶牛更容易找到自己的位置,John为他的牛按1 … N的顺序排上了号,也就是说第一个奶牛是位置1,第二个是位置2,一直到最后一只是位置N。

每场Shuffle都是用N个数字从a1…a N来标明,换句话说,在这个过程中,原本位置在i的奶牛换到了位置a i (每一次的移动位置a i都是1…N的范围内).每头牛在Shuffle的过程中都会移动到它的新位置。不幸的是,所有这些移动的位置a i都是不确定的,一些奶牛可能会想一起跑到同一个位置上,那之后的移动,这些同一个位置上的奶牛就要一起移动。

农场主John注意到,不管发生多少次洗牌,有些位置永远都有奶牛在。在这样的情况下,请你帮他数一下这类的位置

输入格式(file shuffle.in):

第一行输入N代表了奶牛的总数。下一行输入在a1至a n间的整数之间的整数N。

输出格式(file shuffle.out):

无论发生了多少次洗牌,请输出总是含有奶牛的位置。

样例输入:

4

3 2 1 3

样品输出:

3

相关文档
最新文档