问题标题: 酷町堂:4422 公交换乘(transfer)

0
0
已解决
武建豪
武建豪
中级天翼
中级天翼

4422   公交换乘(transfer)

经验值:1200 时间限制:1000毫秒

全国2019CSP-J2试题

不许抄袭,一旦发现,直接清空经验!

题目描述 Description

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

  1. 在搭乘一次地铁后可以获得一张优惠票,有效期为 45 分钟,在有效期内可以消耗这张优惠票,免费搭乘一次票价不超过地铁票价的公交车。在有效期内指开始乘公交车的时间与开始乘地铁的时间之差小于等于45 分钟,即:

tbus − tsubway ≤ 45

  1. 搭乘地铁获得的优惠票可以累积,即可以连续搭乘若干次地铁后再连续使用优惠票搭乘公交车。
    搭乘公交车时,如果可以使用优惠票一定会使用优惠票;如果有多张优惠票满足条件,则优先消耗获得最早的优惠票。

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

输入描述 Input Description

输入的第一行包含一个正整数n
接下来的 n 行,每行包含 3 个整数,相邻两数之间以一个空格分隔。第 i 行的第 1 个整数代表第 i 条记录乘坐的交通工具,0 代表地铁,1 代表公交车;第 2 个整数代表第 i 条记录乘车的票价 pricei;第三个整数代表第 i 条记录开始乘车的时间 ti (距 0 时刻的分钟数)。
我们保证出行记录是按照开始乘车的时间顺序给出的,且不会有两次乘车记录出现在同一分钟。

输出描述 Output Description

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

样例输入 Sample Input

【输入样例 1】 6 0 10 3 1 5 46 0 12 50 1 3 96 0 5 110 1 6 135 【输入样例 2】 6 0 5 1 0 20 16 0 7 23 1 18 31 1 4 38 1 7 68

样例输出 Sample Output

【输出样例 1】 36 【输出样例 2】 32

数据范围及提示 Data Size & Hint

对于 30% 的数据,n≤1000,ti ≤10^6 。
另有 15% 的数据,ti ≤10^7,price_i都相等。
另有 15% 的数据,ti ≤10^9,price_i都相等。
对于 100% 的数据,n≤10^5 ,ti ≤10^9 ,price_i ≤1000。

样例都过了怎么是WA。。。

#include<iostream>
#include<fstream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<string>
#include<iomanip>
#include<cstdlib>
#include<vector>
using namespace std;
int n,a[200000],b[200000],c[200000],f;
int subway,bus,sum;
int main() {
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i]>>b[i]>>c[i];
        if(a[i]==0){
            subway++;
            if(c[i]<=45){
                f++;
            }
        }
        else{
            if(f){
                f--;
                b[i]=0;
            }
            else{
                bus++;
            }
        }
    }
    for(int i=1;i<=n;i++){
        sum+=b[i];
    }
    cout<<sum;
    return 0;
}

9点前结帖


0
已采纳
李奕歌
李奕歌
初级天翼
初级天翼
struct BONUS {
    int price;//价格
    int time;//时间
    BONUS() : price(0), time(0) {}
    BONUS(int p, int t) : price(p), time(t) {}
};

你多少分,要哪里的代码,这是结构体

0
我要回答