题目链接

比赛时间没能通过==, 只能说明自己代码写的太不严谨咯!

解题思想就是贪心

先判断无解的情况:

  1. 奇数不够,因为偶数是无法凑成奇数的

  2. 偶数不够,2个奇数可以凑成一个偶数

  3. 在奇数够用的情况下, 先在k-p堆中每一堆都放一个奇数,

    那么剩余的奇数个数一定是个偶数,否则必定会有另外一堆数的和也为奇数。

有解的情况,先放奇数, 每堆一个奇数。接下来要考虑偶数个数  < p的情况,

也就是用两个奇数来凑一个偶数,输出k-1堆后,有解的情况可以保证最后一堆

一定是满足条件的,也就是全部输出。

 

附上代码:

 n, k, p = map(int, raw_input().split());
a = map(int, raw_input().split());
b, c = [], [];
even, odd = 0, 0;
for i in xrange(n):
if a[i] % 2 == 0:
even += 1
b.append(a[i]);
else:
c.append(a[i]);
odd = n - even;
if odd < k-p or (odd-(k-p))/2+even < p or (odd-(k-p))%2:
print "NO"
else:
print "YES";
for i in xrange(k-p-1):
print 1, c[i]
if p == 0:
print n-(k-p-1),
for i in xrange(k-p-1, odd):
print c[i],
for i in xrange(0, even):
print b[i],
else:
if k != p:
print 1, c[k-p-1]
j = k - p;
if even >= p and p:
for i in xrange(p-1):
print 1, b[i]
left = n - (k-p) - (p-1)
print left,
for i in xrange(k-p, odd):
print c[i],
for i in xrange(p-1, even):
print b[i],
elif even < p and p:
for i in xrange(even):
print 1, b[i]
for i in xrange(p-even-1):
print 2, c[j], c[j+1]
j += 2
left = n - even - j;
print left,
for i in xrange(j, j+left):
print c[i],

Codeforces 439C的更多相关文章

  1. Codeforces 439C Devu and Partitioning of the Array(模拟)

    题目链接:Codeforces 439C Devu and Partitioning of the Array 题目大意:给出n个数,要分成k份,每份有若干个数,可是仅仅须要关注该份的和为奇数还是偶数 ...

  2. codeforces 439C 模拟

    http://codeforces.com/problemset/problem/439/C 题意:给你n个数,分成k个非空集合,其中有p个集合的元素和为偶数,其余k-p个集合的元素和为奇数. 思路: ...

  3. codeforces 439C Devu and Partitioning of the Array(烦死人的多情况的模拟)

    题目 //这是一道有n多情况的烦死人的让我错了n遍的模拟题 #include<iostream> #include<algorithm> #include<stdio.h ...

  4. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  5. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  6. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  7. 【Codeforces 738A】Interview with Oleg

    http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...

  8. CodeForces - 662A Gambling Nim

    http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...

  9. CodeForces - 274B Zero Tree

    http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...

随机推荐

  1. vue.js_02_vue.js的基础指令

    1.v-cloak 作用:解决插值表达式闪烁的问题 当网速过慢时,或者加载数据时间过长时,网页会出现  {{msg}}  的现象 使用方法: <!--缺陷需要写style样式--> < ...

  2. autoreleasing的用法介绍:

    在c/c++,objective-c内存管理中有一条是:谁分配谁释放. __autoreleasing则可以使对像延迟释放.比如你想传一个未初始化地对像引用到一个方法当中,在此方法中实始化此对像,那么 ...

  3. SPSS统计分析案例:无空白列重复正交试验设计方差分析

    SPSS统计分析案例:无空白列重复正交试验设计方差分析 前面有讲过 SPSS正交试验设计及其方差分析 一篇文章,包含了一个典型的正交试验案例.然而在实际应用当中,主观客观条件复杂多变,在试验设计中就要 ...

  4. 开源代码分析-react-native-eyepetizer

    目录结构: app----imgs --- pages ------ home ------ explore ------ follow ------ profile ------  selected ...

  5. bash: express: command not found及vue连接数据库调接口

    今天在使用express -e . 的命令时,cmd给我报了一段不识别的错误: bash: express: command not found ,在网上查了一下,有人指出是express4的版本将命 ...

  6. Echarts在Vue中的使用

    1.使用 cnpm 或 npm 安装 Echarts cnpm方式 cnpm install echarts -S 或者 npm方式 npm install echarts --save 2.在项目文 ...

  7. 给docker里的php安装gd扩展

    docker官方镜像为安装php扩展封装了函数,为开发者提供了很大的便利,以下以Dockerfile的形式演示安装gd扩展的方法,安装gd扩展需要安装几个依赖包,安装依赖包使用系统命令,安装命令根据基 ...

  8. 2019-6-23-win10-uwp-未给任务-GenerateAppxPackageRecipe-的必需参数-AppxManifestXml-赋值

    title author date CreateTime categories win10 uwp 未给任务 GenerateAppxPackageRecipe 的必需参数 AppxManifestX ...

  9. jquery判断元素是否出现在可视区

      在我们的日常开发中,经常会遇到当元素出现在可视区的时候需要去出发某一事件的情况.我最近在优化环球网首页的时候,将非可视区的代码全部放入到webComponent中.打算当这个元素出现在可视区的时候 ...

  10. windows搭建rabbitmq ha

    1.安装erlang22.0 rabbitmq 3.7.15 2.bin下执行命令:rabbitmq-plugins enable rabbitmq_management3.替换.erlang.coo ...