码迷,mamicode.com
首页 > 其他好文 > 详细

菜鸡的CF之旅

时间:2020-06-01 23:47:18      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:个数   main   msu   bsp   def   tps   长度   sele   www   

              A. Odd Selection
题目链接:https://codeforces.ml/contest/1363/problem/A
题目意思大概就是输入一个长度为n的数组,然后问能不能在这个数组中选择x个数,使其相加的和为奇数。
思考:
我们都知道,奇数+奇数=偶数
      偶数+偶数=偶数
      偶数+奇数=奇数
其中我们可以发现,一个数加上偶数并不会改变这个数的奇偶,再然后我们发现奇数个奇数相加为奇数,偶数个奇数相加为偶数.
这样我们就可以把x拆分为n1,n2,其中n1则为从数组中选择的奇数的个数,n2为选择偶数的个数
比赛时这道题想太久了,所以有点着急,代码写的有点乱
    #include <iostream>
    using namespace std;
    int t,n,x,ji,ou;
    int a[1007];
    int main(){
    	scanf("%d",&t);
    	while(t--){
    		scanf("%d%d",&n,&x);
    		ji=0,ou=0;
    		for(int i=1;i<=n;i++){\\统计数组中奇数和偶数的个数
    			scanf("%d",&a[i]);
    			if(a[i]%2==0) ou++;
    			else ji++;
    		}
    		if(x%2==0){
    			int n1=x-1,n2=1,flag=0;\\将x拆分
    			while(n1>0){\\遍历拆分的x
    				if(ji>=n1&&ou>=n2){
    					flag=1;
    				}
    				n1-=2,n2+=2;
    			}
    			if(flag) cout<<"Yes"<<endl;
    			else cout<<"No"<<endl;
    		}else{
    			int n1=x,n2=0,flag=0;
    			while(n1>0){
    				if(ji>=n1&&ou>=n2){
    					flag=1;
    				}
    				n1-=2,n2+=2;
    			}
    			if(flag) cout<<"Yes"<<endl;
    			else cout<<"No"<<endl;
    		}
    		
    	}
    }

 

      

 

 

 

 

 

 

 

 

 

 

 

 

 

菜鸡的CF之旅

标签:个数   main   msu   bsp   def   tps   长度   sele   www   

原文地址:https://www.cnblogs.com/kksk/p/13028191.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!