文章
5
粉丝
495
获赞
2
访问
46.3k
其他高级的算法我也不会写,故直接对问题进行模拟:先开一个容量为100的列表表示一共1-99站,每个站初值为额定人数m。
对于每个[a,b]区间上的购票请求,则直接遍历下标为a,b的列表(若列表容量不够再扩容),看use[j]剩余数是否>=k;
当[a,b]区间上每个站点的人数都大于等于k时表示这个购票请求满足,输出1,然后更新人数数据。
- n, m = map(int, input().split())
- use = [m for i in range(100)]
- for i in range(n):
- a, b, k = map(int, input().split())
- if b > len(use): # 当前列表容量达不到站的数量,扩容
- use += [m for i in range(b - len(use) + 5)]
- flag = 1
- for j in range(a, b + 1):
- if use[j] < k:
- flag = 0
- print(0)
- break
- if flag == 1: # 此次购票请求各个站点都能满足
- for j in range(a, b + 1):
- use[j] -= k # 更新票数
- print(1)
-
登录后发布评论
暂无评论,来抢沙发