CSP-J复赛冲刺必刷题 | P5661 公交换乘

学习C++从娃娃抓起!记录下CSP-J备考学习过程中的题目,记录每一个瞬间。

附上汇总贴:CSP-J复赛冲刺必刷题 | 汇总_热爱编程的通信人的博客-CSDN博客


【题目描述】

著名旅游城市 B 市为了鼓励大家采用公共交通方式出行,推出了一种地铁换乘公交车的优惠方案:

  1. 在搭乘一次地铁后可以获得一张优惠票,有效期为 45 分钟,在有效期内可以消耗这张优惠票,免费搭乘一次票价不超过地铁票价的公交车。在有效期内指开始乘公交车的时间与开始乘地铁的时间之差小于等于 45 分钟,即: tbustsubway≤45
  2. 搭乘地铁获得的优惠票可以累积,即可以连续搭乘若干次地铁后再连续使用优惠票搭乘公交车。
  3. 搭乘公交车时,如果可以使用优惠票一定会使用优惠票;如果有多张优惠票满足条件,则优先消耗获得最早的优惠票。

现在你得到了小轩最近的公共交通出行记录,你能帮他算算他的花费吗?

【输入】

输入文件的第一行包含一个正整数 n,代表乘车记录的数量。

接下来的 n 行,每行包含 3 个整数,相邻两数之间以一个空格分隔。第 i 行的第 1 个整数代表第 i 条记录乘坐的交通工具,0 代表地铁,1 代表公交车;第 2 个整数代表第 i 条记录乘车的票价 pricei ;第三个整数代表第 i 条记录开始乘车的时间 ti(距 0 时刻的分钟数)。

我们保证出行记录是按照开始乘车的时间顺序给出的,且不会有两次乘车记录出现在同一分钟。

【输出】

输出文件有一行,包含一个正整数,代表小轩出行的总花费。

【输入样例】

6
0 10 3
1 5 46
0 12 50
1 3 96
0 5 110
1 6 135

【输出样例】

36

【代码详解】

#include <bits/stdc++.h>
using namespace std;
struct ticket {
    int price;
    int time;
    bool used;
}tick[100005] = {0};
int num;
int front = 1;  
int last = 0;  
int way;
int price;
int tim;
int front2;
long long sumCoins = 0;

int main()
{
    cin >> num;
    for (int i=1; i<=num; i++) {
        cin >> way >> price >> tim;
        if (way==0) {
            last++;  
            tick[last].price = price;
            tick[last].time = tim+45;
            tick[last].used = false;
            sumCoins += price;
        }
        else if (way==1) {
            bool canTick=false;  
            front2 = front;  
            for (int j=front; j<=last; j++) { 
                if (tick[j].time<tim) {
                    front2 = j;  
                    continue;
                }
                if ((tick[j].price>=price) && (!tick[j].used)) {
                    canTick = true;
                    tick[j].used = true;
                    break; 
                }
            }
            front = front2; 
            if (!canTick) {
                sumCoins+=price;
            }
            // else if (canTick==true);
        }
    }
    cout << sumCoins;
    return 0;
}

【运行结果】

6
0 10 3
1 5 46
0 12 50
1 3 96
0 5 110
1 6 135
36

猜你喜欢

转载自blog.csdn.net/guolianggsta/article/details/133410963
今日推荐