首页 > 试题广场 >

糕点

[编程题]糕点
  • 热度指数:10974 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

小团的蛋糕铺长期霸占着美团APP中“蛋糕奶茶”栏目的首位,因此总会吸引各路食客前来探店。

小团一天最多可以烤n个蛋糕,每个蛋糕有一个正整数的重量。

早上,糕点铺已经做好了m个蛋糕。

现在,有一个顾客要来买两个蛋糕,他希望买这一天糕点铺烤好的最重的和最轻的蛋糕,并且希望这两个蛋糕的重量恰好为a和b。剩余的n-m个蛋糕可以现烤,请问小团能否满足他的要求?

数据范围:
进阶:时间复杂度,空间复杂度

输入描述:

输入包含多组数据,每组数据两行。

每组数据的第一行包含4个整数,n,m,a,b,空格隔开。这里不保证a和b的大小关系。

接下来一行m个数,空格隔开,代表烤好的蛋糕重量



输出描述:

对于每一组数据,如果可以办到顾客的要求,输出YES,否则输出NO

示例1

输入

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

输出

YES
NO
NO
YES
NO
NO
NO

备注:

对于40%的数据,

对于100%的数据,,蛋糕重量不会超过1000

while True:
    try:
        n,m,a,b=map(int,input().split())
        # n:总共蛋糕个数, m:已做好蛋糕数量
        # a, b: 想购买的蛋糕数量
        li = list(map(int,input().split())) # 烤好蛋糕的重量

        if max(li)>max(a,b) or min(li)<min(a,b):
            print('NO')
            pass
        elif n-m >= 2:
            print('YES')
        elif n-m == 1:
            if max(li)==max(a,b) or min(li)==min(a,b):
                print('YES')
            else:
                print('NO')
        elif n-m == 0:
            if max(li)==max(a,b) and min(li)==min(a,b):
                print('YES')
            else:
                print('NO')
    except:
        break

小白一个,估计有很多冗余语句。。。
编辑于 2021-10-30 22:18:31 回复(0)
while True:
    try:
        n,m,a,b = list(map(int,input().strip().split()))
        c_weight = [int(x) for x in input().strip().split()]
        c_weight.sort()
        if a>b:
            t=a
            a=b
            b=t
        while True:
            if c_weight[0]<a&nbs***bsp;c_weight[m-1]>b:
                print("NO")
                break
            else:
                if a in c_weight and b in c_weight:
                    print("YES")
                    break
                else:
                    if a in c_weight&nbs***bsp;b in c_weight:
                        if n-m>=1 and c_weight[m-1]<=b:
                            print("YES")
                            break
                        else:
                            print("NO")
                            break
                    else:
                        if n-m>=2:
                            print("YES")
                            break
                        else:
                            print("NO")
                            break
    except:
        break
循环太多,运行超时怎么解决。。。。。。自测是完全可以通过的
发表于 2021-03-18 20:47:03 回复(0)