选课:小刘所在的学校本学期共开设了 60 门课,并且每位同学会选修 5 门不同的课,小刘想知道是否存在一个 3 门课的集合,使得小刘所在班级有至少 p% ( p 为不超过 100 的非负整数)...

题面描述

小刘所在的学校本学期共开设了 60 门课,并且每位同学会选修 5 门不同的课,小刘想知道是否存在一个 3 门课的集合,使得小刘所在班级有至少 p% ( p 为不超过 100 的非负整数) 的同学选修了这三门课。

输入数据

第一行有一个整数 t (1 ≤ t ≤ 20) ,表示有 t 组数据。对于每组数据:
第一行有两个整数 n, p (2 ≤ n ≤ 100000,50 ≤ p ≤ 100) , n 表示小明班级的人数;
接下来的 n 行,每行有 5 个整数 ai (0 ≤ ai ≤ 59) 表示该同学选修的课程号。

输出数据

对于每组数据,如果存在至少 p% 的同学选修相同的 3 门课程,输出一行“ yes ”,否则输出“ no ”。

样例输入

1
5 80
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5

样例输出

yes

心得:这道题我感觉比较复杂,参考了其他编译通过的同学,但是貌似有问题。如
6 50
1 4 6 7 8
1 4 5 9 10
1 3 5 11 12
1 3 5 13 14
2 3 5 15 16
2 3 6 17 17
此时按程序至少3人选择了 {1,3,5},会返回 “yes”,但是肉眼很容易看出,此时不存在3人选择了 {1,3,5},应该返回 “no”

# 拷贝得分题
T = int(input())    
for t in range(T):      
    classN = {}    
    n,p = list(map(int,input().split()))      
    limit = n*p/100      
    for i in range(n):        
        temp = [int(item) for item in input().split()]        
        for temp1 in temp:              
            if temp1 in classN:                
                classN[temp1] += 1            
            else:                
                classN[temp1] = 1    
    result=sorted(classN.items(),key=lambda x:-x[1])    # 按值正序排序        
    if limit >= result[2][1]:        
        print('no')    
    else:        
        print('yes')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值