E. Sakurako, Kosuke, and the Permutation 思维题
tag:math , graphy ,dsu ,greedy , data struct
中文翻译 :
E. Sakurako, Kosuke和排列
每项测试的时间限制:2秒
每项测试的内存限制:256兆字节
Sakurako的考试结束了,她考得很好。作为奖励,她得到了一个排列p。Kosuke不太满意,因为他有一门考试没通过,没有收到礼物。他决定潜入她的房间(多亏了她锁的密码),把排列搞乱,使其变得简单。
一个排列p被认为是简单的,如果对于每一个i(1≤i≤n),满足以下条件之一:
pi=i ppi=i 例如,排列[1,2,3,4]、[5,2,4,3,1]和[2,1]是简单的,而[2,3,1]和[5,2,1,4,3]则不是。
在一次操作中,Kosuke可以选择索引i,j(1≤i,j≤n),并交换元素pi和pj。
Sakurako马上就要回家了。你的任务是计算Kosuke需要执行的最少操作次数,以使排列变得简单。
输入 :
第一行包含一个整数t(1≤t≤10^4)——测试用例的数量。
每个测试用例由两行描述。
第一行包含一个整数n(1≤n≤10^6)——排列p的长度。
第二行包含n个整数pi(1≤pi≤n)——排列p的元素。 保证所有测试用例中n的总和不超 过 10^6。
保证p是一个排列。
输出 对于每个测试用例,输出Kosuke需要执行的最少操作次数,以使排列变得简单。
思路与分析:
在做题的过程中 ,除了大佬上来就直切 ,平庸的我们是不可能马上就有思路,找到突破口的 。我们要对问题进行分析 ,在思考的过程中要不断的产生疑问 ,问自己一些(关键性)的问题。
首先我们要理解题目的几个关键点,并在思