一道算法题n个小朋友在老师的带领下玩游戏.其中需要分组,老师打算根据大家的衣服颜色分组.已知衣服颜色用0-9的数字表示.老师决定每k个人分为一组.每一组的小朋友必须身穿同一种颜色的
n个小朋友在老师的带领下玩游戏.
其中需要分组,老师打算根据大家的衣服颜色分组.
已知衣服颜色用0-9的数字表示.
老师决定每k个人分为一组.每一组的小朋友必须身穿同一种颜色的衣服.
请你告诉老师,是否能成功分组.
Input
仅一组数据
第一行两个整数n,k (1
def main():
n, k = map(int, input().split())
l = map(int, input().split())
if n != len(l):
print "Invalid testcase"
sys.exit(1)
if n % k != 0:
print "NO"
sys.exit(0)
l.sort()
while l:
t = l[:k]
c = map(lambda x: x == t[0], t)
if not all(c):
print "NO"
sys.exit(0)
l = [k:]
print "YES"
main()
简单说一下这个解,
想要YES, 那么必须满足几个条件:
1, n个人可以被平均分成x组, 每组k人.
检测这个条件就求模, n % k, 就可以了
2, 每组的学生颜色相同
检测这个条件, 我们先把数列排序,
就相当于不管行不行, 我们先把组分了,
同色的人在一起.
然后就每次取k个人, 检测是否所有的人穿同样颜色的衣服, 就可以了.
while l, 当还有学生剩下
t = l[:k], 取k个学生
c = map(lambda x: x == t[0], t), 拿所有学生跟第一个学生比较
if not all(c), 如果不全都一样
那就NO
如果全都一样, 那就接着对l[k:], 也就是剩下的学生做相同的比较
因为前面检测过了n % k, 所以可以确定每次都能取到k个学生.
所有检测全都通过的话, 那么就是YES了
1.八年级二班学生到阅览室借书,班长问老师要分成几个小组,老师风趣地说:假如我把43本书分给各个小 2020-06-05 …
开学了,王老师统计了一下,全班一共收集720篇作文.我们班有4个小组,每组的人数都相等,在暑期里, 2020-06-11 …
一道算法题n个小朋友在老师的带领下玩游戏.其中需要分组,老师打算根据大家的衣服颜色分组.已知衣服颜 2020-06-18 …
第一阶段:8个队分为两组,每组进行单循环比赛,决出前两名参加第二阶段的比赛.每个小组第一阶段有多少 2020-06-28 …
今年暑假,实验中学安排全校师生假期进行社会实践活动,将每班分成三个组,每组派1名教师作为指导老师,为 2020-11-06 …
概率题,陈老师决定每周一到周五从班上抽取某一6人学习小组中随意抽三概率题,陈老师决定每周一到周五从班 2020-11-22 …
大师杯网球赛中,共有八名参赛选手,他们被分成两组,每组四个人.分别进行单循环赛,每组决出前两名,再由 2020-11-24 …
(2013•翔安区一模)某校九年级学生小强与他的学习互助组成员商量,决定毕业时,都将自己的相片送一张 2020-12-01 …
老师将糖给三组同学如给甲组每人得12块如给乙组每人得15块如给丙组每人得20块如把糖同给三组同学每人 2020-12-17 …
问:每个小组要下几盘?2、获得冠军着要下几盘?围棋比赛8名选手参加,分两组每4人一组,规定一盘定胜负 2021-01-14 …