解题思路:
注意事项:
参考代码:
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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复