其他分享
首页 > 其他分享> > D. Sequence and Swaps_贪心排序思维

D. Sequence and Swaps_贪心排序思维

作者:互联网

D. Sequence and Swaps_贪心排序思维

题目大意

给一个序列,问是否有可能通过一系列操作使得该序列有序。每次操作可以使得满足选择任意的i满足ai大于x,然后swap(ai,x)。问最小操作次数。

思路和代码

考虑如下样例:

x=1
a={3,2,4,4,5,2}

因为最后要有序,所以每次贪心的把大数换掉即可

int solve2(){
	int n , m ;
	cin >> n >> m ;
	vct<int> a(n + 1 , 0) ;
	rep(i , 1 , n) cin >> a[i] ;
	if(is_sorted(a.begin() + 1 , a.end())) return 0 ;
	
	int ans = 0 ;
	
	rep(i , 1 , n){
		if(a[i] > m) swap(a[i] , m) , ans ++ ;
		if(is_sorted(a.begin() + 1 , a.end())) break ;
	}
	if(is_sorted(a.begin() + 1 , a.end())) return ans ;
	return -1 ;
}

标签:begin,return,Swaps,sorted,Sequence,int,ans,end,贪心
来源: https://www.cnblogs.com/tyriis/p/16250620.html