zoukankan      html  css  js  c++  java
  • codeforces C. Devu and Partitioning of the Array

    题意:给你n个数,然后分成k部分,每一个部分的和为偶数的有p个,奇数的有k-p个,如果可以划分,输出其中的一种,不可以输出NO;

    思路:先输出k-p-1个奇数,再输出p-1个偶数,剩余的在进行构造。  奇数+奇数=偶数。

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <vector>
     4 #include <iostream>
     5 #include <algorithm>
     6 #define maxn 1000100
     7 #define ll long long
     8 using namespace std;
     9 
    10 int n,k,p;
    11 ll a[maxn];
    12 vector<int>qq;
    13 vector<int>pp;
    14 
    15 int main()
    16 {
    17     scanf("%d%d%d",&n,&k,&p);
    18     for(int i=1; i<=n; i++)
    19     {
    20         scanf("%lld",&a[i]);
    21         if(a[i]%2==0) qq.push_back(a[i]);
    22         else if(a[i]%2!=0) pp.push_back(a[i]);
    23     }
    24     int odd=pp.size();
    25     int even=qq.size();
    26     if(odd<k-p||(odd>=k-p&&even+(odd-(k-p))/2<p)||(odd-(k-p))%2==1)
    27     printf("NO
    ");
    28     else
    29     {
    30         printf("YES
    ");
    31         for(int i=0; i<k-p-1; i++)
    32         {
    33             printf("%d %d
    ",1,pp[i]);
    34         }
    35         int x=k-p-1;
    36         int y=even;
    37         if(x<0)x=0;
    38         for(int i=0; i<p-1; i++)
    39         {
    40              if(y)
    41              {
    42                  printf("%d %d
    ",1,qq[y-1]);
    43                  y--;
    44              }
    45              else
    46              {
    47                  printf("%d %d %d
    ",2,pp[x],pp[x+1]);
    48                  x+=2;
    49              }
    50         }
    51         if(k-p!=0&&p)
    52         {
    53             printf("%d %d
    ",1,pp[x]);
    54             x++;
    55         }
    56         if(x<0) x=0;
    57         printf("%d ",y+odd-x);
    58         while(y)
    59         {
    60             printf("%d ",qq[y-1]);
    61             y--;
    62         }
    63         while(x<odd)
    64         {
    65             printf("%d ",pp[x]);
    66             x++;
    67         }
    68         printf("
    ");
    69     }
    70     return 0;
    71 }
    View Code
  • 相关阅读:
    textarea输入限制
    MyBatis 下使用SQLite
    天气预报
    导出Excel、csv
    WDK 常用的几个函数
    Windows 内核 hello world
    内核模式下的文件操作
    Windows 内核编程初涉
    Windows 内地管理
    Windows 内核 同步处理
  • 原文地址:https://www.cnblogs.com/fanminghui/p/4322299.html
Copyright © 2011-2022 走看看