解题思路:
注意事项:
参考代码:
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语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:643 |
C语言训练-角谷猜想 (C语言代码)浏览:1768 |
【亲和数】 (C语言代码)浏览:530 |
计算质因子 (C++代码)浏览:1825 |
A+B for Input-Output Practice (II) (C语言代码)浏览:1043 |
简单的a+b (C语言代码)浏览:626 |
DNA (C语言描述,蓝桥杯)浏览:1653 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:541 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:590 |
sizeof的大作用 (C语言代码)浏览:1138 |