【CF1833C】题解

本文章同步发表于洛谷

思路

首先,先明确一点:

  • 同奇偶的两个数相减,等于偶数。
  • 奇偶性不同的两个数相减,等于奇数。

接下来,我们要确定要都变成奇数还是偶数。

偶数?

如果是偶数,由于要同奇偶的两个数相减,结果才等于偶数。

又因为改变后的每个数都要 >0,所以,最小的奇数没有可以与其相减的奇数。所以,变成偶数是错误的。

但是

如果都是偶数的话,其实是可以的,所以要谈判。

现在目标明确了,把所有偶数变成奇数。

显然,我们可以贪心的将每个偶数匹配最小的奇数,如果发现有一个偶数比这个奇数小,则输出 NO,否则,输出 YES

参考代码

#include<bits/stdc++.h>
using namespace std;
int t,n,a[200010];
int main(){
	scanf("%d",&t);
	while(t--){
		scanf("%d",&n);
		int minn=0x7fffffff;
		int s1=0,s2=0;
		for(int i=1;i<=n;i++){
			scanf("%d",&a[i]);
			if(a[i]&1) minn=min(minn,a[i]);
			if(a[i]&1) s1++;
			else s2++;
		}
		if(s1==n||s2==n){
			printf("YES\n");
			continue;
		}
		bool f=0;
		for(int i=1;i<=n;i++){
			if(a[i]%2==0){
				if(a[i]<minn){
					f=1;
					break;
				}
			}
		}
		if(f) printf("NO\n");
		else printf("YES\n");
	}
	return 0;
}
posted @   fengxiaoyi  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示