1 条题解
-
1
队列!!!
Python
n = int(input()) trans = [] # 队列存储失效时间 q = [0]*n tail,head = 0,0 sum = 0 for i in range(n): t = list(map(int,input().split())) trans.append(t) for i in trans: if i[0] == 0: q[tail] = i[2]+45 tail+=1 sum+=i[1] else: # 找到第一张可以用的优惠券,把失效的删去 while head!=tail and q[head]<i[2]: head+=1 # 没有优惠劵了QwQ if head == tail: sum+=i[1] # 用掉优惠券 else: head+=1 print(sum)
C++
#include <bits/stdc++.h> using namespace std; const int N = 1005; int n,sum; struct Point { int op,price,time; }trans[N]; queue<int> q; vector<Point> p; int main() { cin >> n; for(int i=1;i<=n;i++) { int x,y,z; cin >> x >> y >> z; p.push_back({x,y,z}); } for(auto it:p) { if(it.op == 0) { q.push(it.time+45); sum+=it.price; } else { // 找到第一张可以用的优惠券,把失效的删去 while(!q.empty() && q.front()<it.time) q.pop(); // 没有优惠劵了QwQ if(q.empty()) sum+=it.price; // 用掉优惠券 else q.pop(); } } cout << sum; return 0; }
- 1
信息
- ID
- 799
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 689
- 已通过
- 214
- 上传者