贪心题求解
noip吧
全部回复
仅看楼主
level 2
FLYBAY 楼主
给定一个1到n的排列,请你求出,如果使用交换的方法将这个序列排成升序,最少需要交换多少次。
Input第一行一个整数n。
第二行n个整数表示一组1到n的排列。
Output
一个整数,表示最小交换次数。
Sample Input
32 3 1
Sample Output
2
n<=100000
2010年11月15日 12点11分 1
level 9
数据规模像这样的话,就是归并排序,当然,你想用树状数组我也不拦你。
2010年11月15日 12点11分 2
level 2
FLYBAY 楼主
这个题标准解法是贪心。o(n)复杂度。请注意这个题并没有要求相邻才能交换。如果必须相邻就是归并。
2010年11月16日 06点11分 3
level 7
既然是排列
每个数都只唯一对应一个位置吧
先找交换以后可以让2个数返回原位的优先交换。
然后再把其他数字归位。
就行了吧?
2010年11月16日 06点11分 4
level 6
回复:4楼
。。。。。 思想很先进 操作性几乎没有~~~~~~
   如果能愿闻其祥
...... 直接 模拟吧 不对位就换
2010年11月16日 07点11分 5
level 7
如果一次交换能让两个数字归位那就交换
否则 让一个数字归位
2010年11月16日 07点11分 6
level 6
表示 好像真的是模拟不是贪心~~~~~
2010年11月16日 07点11分 7
1