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

0
0
已解决
熊潇然
熊潇然
初级启示者
初级启示者

求思路!!!

熊潇然在2022-09-27 13:12:51追加了内容

@万睿言

#include<bits/stdc++.h>
using namespace std;
int n,cnt,sum,k,a[100005],b[100005];
struct f{
    int x,p,t;
}s[100005];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>s[i].x>>s[i].p>>s[i].t;
        if(!s[i].x){
            sum+=s[i].p;
            cnt++;
            k++;
            a[k]=s[i].t;
            b[k]=s[i].p;
        }else{
            bool f=0;
            if(cnt==0) continue;
            for(int j=1;j<=k;j++){
                if(s[i].t-a[j]<=45&&s[i].p<=b[j]){
                    cnt--;
                    f=1;
                    break;
                }
            }
            if(!f){
                sum+=s[i].p;
            }
        }
    }
    cout<<sum;
    return 0;
}

 

Wrong Answer  0分

 

这一题要用 滑动窗口

不这样啊?

熊潇然在2022-09-27 13:14:27追加了内容

4422 题目传送门


0
已采纳
万睿言
万睿言
初级光能
初级光能

用一个数组来装所有的收集到的赠票。每当坐地铁的时候,就直接花钱,然后获得一张赠票,放到数组里面。每当坐公交的时候,看看数组里面有没有时间合适,价格小于现在公交票价的赠票,并且没用过的赠票,直接用时间最早的那一张就可以了

0
0
万睿言
万睿言
初级光能
初级光能

这题还要考虑数据范围的情况

0
0
我要回答