题解 | 活动安排-贪心-结束时间

活动安排

https://www.nowcoder.com/practice/16d971e9e42e4f3b9b1e2b8794796a43

import sys

# for line in sys.stdin:
#     a = line.split()
#     print(int(a[0]) + int(a[1]))
"""
 解题思路: 贪心解法
 0. 对所有活动以结束时间b 为排序
 0.1 设置 count 计数  current_end=-1  作为记录结束时间
 1. 选择结束时间早的活动,为后面活动预留时间
 2.  选择下一个不重叠活动 比较当前活动的起始时间a与current_end  如果当前的起始时间a 大于current_end
 用当前活动结束时间更新current_end 用于下次比较,  每次更新当前的结束


"""
def func(arr:list)->int:
    arr.sort(key= lambda x:x[1])
    count=0
    current_end=-1 
    for i in range(len(arr)):
        if arr[i][0]>=current_end:
            count+=1
            current_end=arr[i][1]# 更新当前的结束时间
    return count 
def solve():
    n=int(input())
    #print(n)
    arr=[]
    for i in range(n):
        a=[]
        line =input().split(" ")
        a.append(int(line[0]))
        a.append(int(line[1]))
        arr.append(a)
    #print(arr)
    print(func(arr))
solve()
    

全部评论

相关推荐

认真搞学习:这么良心的老板真少见
点赞 评论 收藏
分享
仁者伍敌:难怪小公司那么挑剔,让你们这些大佬把位置拿了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务