您好,欢迎来到图艺博知识网。
搜索
您的当前位置:首页zzulioj周赛 问题 G: 安全出行

zzulioj周赛 问题 G: 安全出行

来源:图艺博知识网

问题 G: 安全出行

问题

问题 G: 安全出行
时间: 1 Sec  内存: 128 MB

题目描述
有 N 辆汽车在无限长的单行道上行驶,且行驶方向为坐标值增大的方向。每辆车在跑道上开始行驶的位置互不相同,一些车辆的行驶速度可能相同,也可能不同。由于跑道是单行道,十分狭窄,汽车们无法相互超越。当一辆速度很快的汽车追上另一辆汽车时,他必须减速至与另一辆车速度相同以免发生碰撞,并成为同一车队的一员。此时,两辆车可以视为在同一点上。最终,再也没有汽车会撞到(追上)其他汽车了。
求在这种情况下,会剩下多少个车队。
输入
第一行包含整数N。
接下来N行,每行包含一辆车的初始位置和行驶速度。
所有车辆的初始位置各不相同,且是按照递增顺序给出的。
1<= N <= 1e5
初始位置范围[0 , 1e9]
行驶速度范围[0 , 1e9]
输出
输出一个整数,表示最终剩下的车队数量。

样例输入 Copy
5
0 1
1 2
2 3
3 2
6 1
样例输出 Copy
2

代码

/*
    Dreams never shine!
    It's you that shine while chasing your dreams :)
    JAYO!!
*/
#include <iostream>
#include <algorithm>
using namespace std;

const int maxn = 100000 + 1;
typedef long long LL;

int main() {
    int N;
    cin >> N;
    static int arr[maxn];
    int tmp, v, maxVel, cnt = 0;
    for(int i = 0; i < N; i++) {
        cin >> tmp >> v;
        arr[i] = v;
    }

    maxVel = arr[N - 1];
    for(int i = N - 1; i >= 0; i--) {
        if(arr[i] <= maxVel) {
            cnt++;
            maxVel = arr[i];
        }
    }

    cout << cnt << endl;
 	return 0;
}

总结

考虑不周啊,提交了几次都是错的,最后终于AC!

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuoyibo.net 版权所有 湘ICP备2023021910号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务