题目描述:已知KTV房间内有x个麦克风(最多x个人一起唱),同一时刻只能唱一首歌。现有n个人去唱歌,共有y首歌的时间。问:当他们离开时,所有人想唱的歌是否已经唱完。

输入描述:第一行是一个整数 t,表示待测试案例数;

第二行三个整数 n,x,y (唱歌人数、同时唱歌可容纳的人数、可唱y首歌曲的时间)

接下来从上到下的每行,表示n个人想唱的歌曲,第一个元素为个人想唱歌数量,后面                    表示歌曲编号。

输出描述:对于每组测试案例,所有人均唱完想唱歌曲,输出“YES”;否则输出“NO”。

情况一:

样例输入

1

3 3 3

1 2

1 3

1 4

样例输出

YES

情况二:

样例输入

2

1 1 1

2 1 2

2 2 1

1 1

1 1

样例输出

NO

YES

情况三:

样例输入

1

3 2 3

2 1 2

2 1 3

2 1 2

样例输出

NO

解决思路:1. 需要考虑所有人想唱的不同歌曲数量之和是否小于等于总共可唱歌曲时间y。例如上面第一种情况:同学1想唱歌曲2,同学2想唱歌曲3,同学3想唱歌曲4,总共有y=3首歌的时间,因此,每位同学想唱歌曲均可以唱完;如果所有同学想唱的不同歌曲数量之和(例如有:歌曲1~4)大于总共可唱歌曲的时间y(y=3), 那么总会有一首歌没有被唱到。

1. 基础上,我们还要考虑上面第三种情况:总共有3首歌的时间(y=3), 所有同学也只想唱3首不同的歌(歌曲1~3), 但是每首歌只容纳两个人唱,对于歌曲1有3位同学想唱,这必定有一位同学无法参与到同时唱的过程中,只能等待下首歌时再唱。上述第三种情况可以这样进行:第一首歌的时间,同学1和同学2唱歌曲1;第二首歌的时间,同学1和同学3唱歌曲2;第三首歌的时间同学2唱歌曲3;最后还剩同学3想唱的歌曲1没唱到,最终输出为NO。因此我们还需要考虑同首歌想唱同学的数量与可同时容纳唱歌人数的关系。

2. 要考虑到多个测试案例 同时输入的情况,例如上面的第二种情况:第一行表示总共有 2个测试案例,接下来第二三行为案例一,第四五六行为案例二。

 代码如下:

import math# 确定输入几个案例,利用while循环将每个案例输入获取结果
case = int(input())while case:n, x, y = map(int, input().split()) # 统计所有人想唱的歌曲song_all# 统计去除重复歌曲后的song_all(不同类型歌曲的数量)song = []song_all = []for i in range(n):b = list(map(int, input().split()))for i in range(1, len(b)):song_all.append(b[i])if b[i] not in song:song.append(b[i])# 利用字典统计存储同首歌有多少同学想唱dict = {}for item in song:dict.update({item: song_all.count(item)})# 计算所有同学按照规定唱完所有想唱歌曲,需要几首歌的时间nums = len(song)for i in dict.keys():# 计算所有想唱第i首歌所需要的时间(几首歌的时间)# math.ceil()向上取整nums1 = math.ceil(dict[i] / x) - 1nums += nums1# 判断是否可以唱完if nums <= y:print('YES')else:print('NO')case -= 1

【赛码】Python【KTV唱歌】给定条件,判断是否有人没唱完想唱歌曲相关推荐

  1. python 动态执行条件判断_【人生苦短,我学 Python】基础篇——条件判断与循环语句(Day12)_不积跬步,无以至千里!-CSDN博客...

    原文作者:AI 菌 原文标题:[人生苦短,我学 Python]基础篇--条件判断与循环语句(Day12) 发布时间:2021-02-08 23:17:06 写在前面:大家好!我是[AI 菌],一枚爱弹 ...

  2. python重复元素判定编程_从零开始学Python编程四:条件判断与循环

    前面已经介绍了不少Python基础知识,大家不要觉得不耐烦,想要学好Python,做好Python开发,一定要打牢基础.大家也发现了,Python中很多基础知识和数学算法是一样的,比如今天要教给大家的 ...

  3. Python入门基础之条件判断、循环、dict和set

    Python之if语句 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,可以用if语句实现: age = 20 if age >= 18:print 'your age is' ...

  4. <From Zero to Hero>零基础学习Python基础语法【条件判断与条件嵌套】

    目录 条件判断 单向判断:if 双向判断:if-else- 多向判断:if-elif-else- if嵌套 if嵌套的执行顺序 如何写嵌套代码 小练习1 小练习2 对于Python来讲,需要正确的[沟 ...

  5. Python基础---循环、条件判断

    循环.条件判断: 条件判断: 每条if语句的核心都是一个值为True或False的表达式 通常情况下,if条件判断配合for循环,while循环使用 语法:if ... 如果满足if后的判断条件,则执 ...

  6. 【Python入门】5-1 条件判断 if、if-else、if-elif-else

    文章目录 1. if语句 2. if-else语句 3. if-elif-else语句 1. if语句 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不 ...

  7. 廖雪峰python教程阅读之条件判断

    条件判断 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现: age = 20 if age >= ...

  8. python if 多个条件判断

    if语句判断多个条件. 多数情况下,仅仅一个判断条件难以满足我们接下来的操作,通常都是多个条件下执行后面的语句.由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来 ...

  9. 我的python之路七条件判断语句if的基本语法与应用

    Python条件语句IF的语法格式 Python条件语句IF简介 单条件判断,及格式 单独if--使用 if--else配套使用 多条件判断语句的使用 嵌套语句的使用 if--elif--语句的使用 ...

最新文章

  1. 100_框架对象事件
  2. 软工作业3—词频统计
  3. 页面缓存 ehcache(简单的)
  4. 阿丽塔大脑是机器人哪_解读:科幻电影《阿丽塔:战斗天使》中的脑-机接口技术!...
  5. python正则表达式知识点
  6. glide 压缩图拍呢_用Glide-图片的压缩-图片压缩原理
  7. [Luogu 1351] NOIP2014 联合权值
  8. Skiing(2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 H)
  9. 排序算法之一 冒泡排序(C++版本)
  10. [置顶]灰のNOIP总结
  11. 【软件安装】CuteFTP Pro安装过程(含安装包)
  12. 听说你要删库跑路了?这篇Linux脚本请收好
  13. 微信开发工具调试公众号
  14. SSD-主控、闪存和固件(转)
  15. html制作古诗网页登高,杜甫登高古诗硬笔书法作品图片
  16. 关于注册时验证邮箱,并实现类似安卓的吐丝效果
  17. linux generic netlink实现机制:注册、创建
  18. sql server使用杂记(二)
  19. 面向对象与面向过程的区别与联系
  20. 在线观看北京奥运会直播 在网上看奥运会直播

热门文章

  1. docker mysql data_Docker 安装mysql容器数据卷挂载到宿主机
  2. 南方数码iData数据工厂二次开发图层选择
  3. 【狂神Vue】Vue,ElmentUI
  4. 技术带来的问题,得技术来解决
  5. 关键问题可能不是出在技术上
  6. 【MATLAB】imadjust, histeq, adapthisteq调整图像对比度
  7. android河流曲线控件,WWF Free Rivers
  8. new buffer的使用
  9. phasar LLVM静态分析框架介绍
  10. 1409: 矩阵乘积