解题思路:

注意事项:

参考代码:

first = input()

n,m,T=[int (i) for i in first.split()]

a=[]

 

for i in range(m):

    a.append([int(i) for i in input().split()])

 

#对订单的的时间进行排序,目的是算出当前订单与上一回订单之间的间隔

#从未计算出这家店没有订单的时候优先级下降数

#即:prior[idd] -= tt-order[idd]-1

a=sorted(a,key=lambda a:a[0])

 

order=[]#订单的时刻

prior=[]#优先级的分数

flag=[]#是否在优先缓存中

#初始化为0

order=[0 for i in range(n+1)]

prior=[0 for i in range(n+1)]

flag=[0 for i in range(n+1)]

 

#遍历每一条订单信息

for i in range(m):

    tt=a[i][0]

    idd=a[i][1]

    #如果当前订单的时间不等于上次的订单

    #由题意每过一秒优先级减1,所以优先级减去间隔

    if tt != order[idd]:

        prior[idd] -= tt-order[idd]-1

    if prior[idd]<0: prior[idd]=0#优先级最低为0

    if prior[idd]<=3: flag[idd]=0

    prior[idd]+=2  #有订单则优先级加2

    if prior[idd]>5: flag[idd]=1

    order[idd]=tt  #记录这次订单的时间,下此迭代使用

 

#处理到了T时刻的情况

for i in range(1,n+1):

    #如果最后一个订单不是T时刻的

    #要减去最后一趟订单时间与t的差的绝对值

    if order[i] <T:

        prior[i]-=T-order[i]

        if prior[i]<=3: flag[i]=0

 

#遍历求在缓存区的商家个数

ans=0

for i in range(n+1):

    if( flag[i]>0):

        ans+=1

print(ans)


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论