30分求调(有注释!)
查看原帖
30分求调(有注释!)
970949
CleverSea楼主2024/10/3 10:59

rt,用的队列,样例都能过,评测听取WA声一片,求大佬指点!(测试数据点我

#include <bits/stdc++.h>
using namespace std;

int n, ans;

struct Node // 优惠票结构体
{
    int p, t; // p为该优惠票的价格,t为获得的时间
};

queue<Node> q; // 用来存储优惠票的队列q

signed main()
{
    cin >> n; // 输入n
    while (n--) // 遍历每次乘车记录
    {
        int a, p, t;
        cin >> a >> p >> t;
        while (!q.empty() && t - (q.front()).t > 45) q.pop(); // 将所有超过45分钟的优惠票弹出
        if (a == 0) // 如果是地铁
        {
            q.push({p, t}); // 将优惠票存入队列q
            ans += p; // ans加上乘地铁的钱
        }
        else // 如果是公交
        {
            if (!q.empty() && (q.front()).p >= p) q.pop(); // 如果当前队列非空(有45分钟以内的优惠票)且优惠票的价格 >= 公交价格,则使用优惠券
            else ans += p; // 否则不使用,ans加上坐公交的钱
        }
    }
    cout << ans << endl; // 输出ans
    return 0;
}

2024/10/3 10:59
加载中...