jlh的童年(C++)

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;
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值