codeforces #865 div1A

A. Ian and Array Sorting

思路:首先我们可以从前往后做一遍,把除了最后一个元素其他所有数都变成和第一个数一样的数,然后假如前n-1个数个数为偶数,这样我们分组进行操作,一定可以把所有数变成无限小,也就是说一定会有解,也就是说n为奇数一定有解,我们考虑n为偶数的情况,n为偶数,我们从前往后做一遍,前n-1个数相同,前n-2个数一定可以变为无穷小,所以我们只需要比较最后两个数也就是n-1和n的大小即可。

#include <bits/stdc++.h>

using namespace std;
typedef long long LL;
const int N = 2e5 + 10;
vector<LL>a, b;
void run()
{
	a.clear();
	b.clear();
	int n;scanf("%d", &n);
	for(int i = 0; i < n; ++ i)
	{
		LL x;	scanf("%lld", &x);
		a.push_back(x);
		b.push_back(x); 
	}
	sort(b.begin(), b.end());
	bool success = true;
	for(int i = 0; i < n; ++ i)
		if(a[i] != b[i])	success = false;
		
	if(success)	
	{
		puts("YES");
		return;
	}
	if(n & 1)	puts("YES");
	else
	{
		for(int i = 1; i + 1 < n; ++ i)
		{
			LL d = a[i - 1] - a[i];
			a[i] += d;
			a[i + 1] += d;
		} 
		if(a[n - 2] <= a[n - 1])	puts("YES");
		else	puts("NO");
	}
}

int main()
{
//	freopen("1.in", "r", stdin);
	int t;cin >> t;
	while(t --)	run();	
	return 0;  
}
posted @   cxy8  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示