首页 > 其他分享 >【CF1833C】题解

【CF1833C】题解

时间:2023-05-21 09:44:21浏览次数:46  
标签:奇偶 相减 CF1833C 奇数 int 题解 偶数

本文章同步发表于洛谷

思路

首先,先明确一点:

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

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

偶数?

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

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

但是

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

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

显然,我们可以贪心的将每个偶数匹配最小的奇数,如果发现有一个偶数比这个奇数小,则输出 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;
}

标签:奇偶,相减,CF1833C,奇数,int,题解,偶数
From: https://www.cnblogs.com/fengxiaoyi/p/17418227.html

相关文章

  • 【CF1833D】题解
    本文章同步发表于洛谷思路这是一道水题,但细节很多......首先,要求字典序最大,显然就想到了让最大的数字在第一位。于是就进一步得出了应该让最大数字在翻转区间的后一位,初步得出了以下思路:找到最大的数(\(n\))所在位置\(r\),将\(r-1\);贪心的寻找\(r-1\)以前第一个比\(p_1\)......
  • 【题解】CF193D Two Segments
    题意给定一个\(1\simN\)的排列,在这个排列中选出两段互不重叠的区间,求使选出的元素排序后构成公差为1的等差数列的方案数。选出的两段区间中元素构成的集合相同时视为同一种方案。\(1\leN\le3\times10^5\)。传送门分析如果考虑怎么优化枚举的两个区间的话,发现不太好搞(反正......
  • jre jdk更改目录后Java无法运行问题解决方案
    问题:在将Java文件(包含jdkjre)由C盘直接剪贴到D盘后,所有Java程序无法运行,且其Java图标不再显示。解决方案:首先更改环境变量。当我们单纯地将Java文件更改位置后,我们计算机的环境变量仍未改变,依旧是当时安装Java时的配置。步骤:控制面板—>系统和安全—>系统—>高级系统设置—>环境......
  • P5179 Fraction 题解
    题目描述给你四个正整数\(a,\,b,\,c,\,d\),求一个最简分数\(\frac{p}{q}\)满足\(\frac{a}{b}<\frac{p}{q}<\frac{c}{d}\)。若有多组解,输出\(q\)最小的一组,若仍有多组解,输出\(p\)最小的一组。前置知识:Stern-Brocot树首先引入分数逼近。这里的分数逼近是指用用一个......
  • CF1781F题解
    \(\text{link}\)。也是一道非常巧妙的\(\texttt{dp}\)。容易想到把括号变成\(\pm1\)。考虑括号序列合法等价于前缀和\(\ge0\),我们可以想加入\(()\)或\()(\)对前缀的影响。设加入的位置的前一位前缀和为\(x\),则加入\(()\)相当于把\(x\)替换为\([x,x+1,x]\),加入......
  • CSP-J2021试题题解
    1.分糖果原题:https://www.luogu.com.cn/problem/P7909原代码:#include<bits/stdc++.h>#definelllonglongusingnamespacestd;lln,l,r;intmain(){ cin>>n>>l>>r; if(r%n==n-1)cout<<n-1; elseif(l%n==n-1)cout<<n-1; elseif(......
  • 问题解一
    (1)用pycharm连接mysql时,需要安装一个驱动,点击连接界面,如果TestConnection不可用,点击右边的按钮即可(2)如果要将同一网站不同链接的数据存入数据库,可考虑重写start_requestseg:forindex,hrefinenumerate(self.start_urls):ifindex==0:yieldscrapy.Request(......
  • 僵尸进程问题解决
    1何为僵尸进程僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。如果父进程先退出,子进程被init接管,子进程退出后init会回收其占用的相关资源。在UNIX系统中,一个进程结束了,但是它的父进程没有等待(调用wait/wai......
  • 【P4331 [BalticOI 2004]】Sequence 数字序列 题解(左偏树维护动态区间中位数)
    左偏树维护动态区间中位数。传送门P4331BalticOI2004Sequence数字序列。Solution1我的思路和题解前半部分完全重合了((如果按照单调不增去分割\(a\)序列的话,对于每一段我们能很简单地得出它的最佳答案:中位数。发现严格单调很难做,很难拿捏,考虑对\(a\)序列的每一项都进......
  • CSP-J2022山东补赛题解
    1.植树节原题:https://www.luogu.com.cn/problem/U285015代码:#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintN=1e6+255;inta[N],n,x,y,maxb=-1e9,ans=-1e9;intmain(){ cin>>n; for(inti=1;i<=n;i++){ cin>>x&g......