1 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int MAXN = 100000; int n; // 类型 0/1 地铁、公交,票价、时间 int typ[MAXN + 5], pri[MAXN + 5], t[MAXN + 5]; int main() { cin >> n; for (int i = 1; i <= n; i++) cin >> typ[i] >> pri[i] >> t[i]; int ans = 0; for (int i = 1; i <= n; i++) { if (typ[i] == 0) ans += pri[i]; else { // 有没有能用的优惠票要用 // 前 45 分钟内,有没有票价大于等于当前价格的地铁 // 如果有多个,留下第一个 bool flag = false; // 只需要看 45 分钟以内的,而每次记录时间都不一样,所以只要看最近 45 条记录 for (int j = max(1, i - 45); j <= i - 1; j++) { if (typ[j] == 0 && t[i] - t[j] <= 45 && pri[j] >= pri[i]) { flag = true; typ[j] = 1; break; } } if (!flag) ans += pri[i]; } } cout << ans; return 0; }
- 1
信息
- ID
- 6408
- 时间
- 1000ms
- 内存
- 250MiB
- 难度
- 2
- 标签
- 递交数
- 8
- 已通过
- 3
- 上传者