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
相关主题