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 ;
}
posted @   tyrii  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示