zoukankan      html  css  js  c++  java
  • codeforces 439C 模拟

    http://codeforces.com/problemset/problem/439/C

    题意:给你n个数,分成k个非空集合,其中有p个集合的元素和为偶数,其余k-p个集合的元素和为奇数。

    思路:考虑两个数和的情况,奇+奇=偶,奇+偶=奇,偶+偶=偶。所以解决方案不存在的情况为

    (oddnum<k-p || (oddnum-(k-p))%2!=0 || evennum+(oddnum-(k-p))/2<p)。

    先输出k-p-1组的单个奇数,输出p-1组偶数(先为单个偶数,偶数不够两个奇数),若(k!=0&&k-p!=0),输出一个奇数,其余数一组输出。

    #include<cstdio>
    #include<iostream>
    using namespace std;
    int  even[100020],odd[100020];
    int main() {
        int n,k,p,evennum=0,oddnum=0;
        int dig;
        scanf("%d%d%d",&n,&k,&p);
        for(int i=0;i<n;i++) {
            scanf("%d",&dig);
            if(dig%2==0) even[evennum++]=dig;    
            else odd[oddnum++]=dig;
        } 
        if(oddnum<k-p || (oddnum-(k-p))%2!=0) printf("NO
    ");
        else {
            if((evennum+(oddnum-(k-p))/2)<p) printf("NO
    ");
            else {
                int e=evennum,o=oddnum;
                printf("YES
    ");
                int a;
                for(a=0;a<k-p-1;a++) {
                    printf("1 %d
    ",odd[a]);o--;
                }
                int j=a;
                for(int i=0;i<p-1;i++) {
                    if(e>0) {
                        printf("1 %d
    ",even[i]);
                        e--;    
                    }
                    else {
                        printf("2 %d %d
    ",odd[j++],odd[j++]);
                        o-=2;
                    }
                }    
                if(p!=0&&k-p!=0) {
                    printf("1 %d
    ",odd[j]);o--;
                }
                printf("%d ",o+e);
                for(int i=evennum-e;i<evennum;i++) printf("%d ",even[i]);
                for(int i=oddnum-o;i<oddnum;i++) printf("%d ",odd[i]);
                printf("
    ");
            }
        }
        return 0; 
    } 
  • 相关阅读:
    类和对象
    数组
    循环结构
    选择结构
    变量,数据类型和运算符
    什么是JDBC,JDBC的使用
    重拾JavaScript
    git使用日记
    Base包
    RabbitMQ(windows环境)下载与安装
  • 原文地址:https://www.cnblogs.com/LinesYao/p/5709138.html
Copyright © 2011-2022 走看看