jlh的童年

description

jlh小时很喜欢玩弹珠,但是他的玩法有些特别。他在一条直线上放一些纸当陷阱,弹珠每次必须跳过一个陷阱(不能多也不能少),并且不掉到陷阱内,如果弹珠顺利跳过所有陷阱,就算成功了,否则就算失败。我们假设弹珠每次跳相同的距离,现在让你写一个程序帮jlh判断,到底有没有可能成功。

input

先输入一个T,表示有T组测试数据。每次输入一个n(n<=100),表示有n个陷阱,接下来n行,每行输入区间(l,r),表示陷阱(0<=l<=r<=50000)。

output

如果jlh有可能成功,输出YES,否则输出NO。

#include "iostream"
#include "vector"
#include "algorithm"

using namespace std;

int main() {
    int t, n;
    int min = 0;
    cin >> t;
    //遍历案例
    for (int i = 0; i < t; ++i) {
        cin >> n;

        //装填陷阱
        vector<vector<int>> trap(n);
        for (int j = 0; j < n; ++j) {
            int l, r;
            cin >> l >> r;
            if (r >= l) {
                trap[j].push_back(l);
                trap[j].push_back(r);
                min = max(min, l - n);

            } else {
                return 0;
            }
        }

        //装填最小步长
        vector<int> stepMin;
        for (int j = 0; j < n; ++j) {
            stepMin.push_back(trap[j][1] - trap[j][0]);
        }


        sort(stepMin.begin(), stepMin.end());

        int min = stepMin[n - 1];

        int flag = 1;

        for (int j = 0; j < n - 1; ++j) {
            if (trap[j][0] + min > trap[j + 1][0])
                flag = 0;
            break;
        }

        if (flag == 1)
            cout << "YES" << endl;
        if (flag == 0)
            cout << "NO" << endl;
    }
}
上一篇:选择排序


下一篇:2022 LOJ 随机做题随笔——二月