题目链接

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

解题思想就是贪心

先判断无解的情况:

  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. [转]WPF中Binding的技巧

    在WPF应用的开发过程中Binding是一个非常重要的部分. 在实际开发过程中Binding的不同种写法达到的效果相同但事实是存在很大区别的. 这里将实际中碰到过的问题做下汇总记录和理解. 1. so ...

  2. TP5隐藏index.php

    一,找到/public/.htaccess文件,如果你的入口文件已经移动到根目录下,那么你的.htaccess文件也要剪切到根目录下,总之要确保.htaccess跟入口的index.php保持同级. ...

  3. kafka理论

    一.消息队列,简称MQ,message queue 生产者:生存数据写到kafka,持久化到硬盘.对同一个Topic来讲,生产者通常只有‘一个’(可以多并发)数据保存时常可以配置,默认保存七天. 消费 ...

  4. spring整合http

    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接出处:https://blog.csdn.net/qq_3076499,否则保留追究法律责任的权利. 如果 ...

  5. 百度地图JavaScript API申请密钥注意要点

    1.应用类型:浏览器端 2.启用服务:Javascript API要勾选 3.IP白名单:*即可

  6. windows console 控制台自启动

    var fileName = Assembly.GetExecutingAssembly().Location; System.Diagnostics.Process.Start(fileName);

  7. JAVA面试常见问题之基础篇

    一.  面向对象的特征:继承.封装.(抽象).多态 继承:继承是子类自动共享父类数据和方法的机制,这是类之间的一种关系,提高了软件的可重用性和可扩展性. 封装:封装是保证软件部件具有优良的模块性的基础 ...

  8. 前端插件--fastclick解决点透问题

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. webstorm 2017.3.5之后 激活

    选择"license server" 输入:http://idea.codebeta.cn

  10. SpringBoot-(10)配置虚拟路径-指定外部路径文件夹存取文件

    参考:https://blog.csdn.net/feng2147685/article/details/95623135 package com.online.director; import or ...