码迷,mamicode.com
首页 > 其他好文 > 详细

div2 620 C

时间:2020-02-22 15:27:28      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:force   ++   lin   else   rev   pre   定义   div2   break   

C

Tag

双指针,贪心


定义一个温度区间,\([mn,mx]\),使得这个范围在\(t\)分钟的变化与下一个温度区间产生交集

然后不断的迭代这个区间,如果中途不能与下一个区间产生交集,或者最后区间不存在就输出No

因为客人到达的时间为增序,所以不需要排序

#include <bits/stdc++.h>
using namespace std;
const int N = 110;
int t[N],l[N],h[N];
int main() {
    int q,n,m;
    cin >> q;
    while(q --) {
        bool flag = 0;
        cin >> n >> m;
        for(int i = 0;i < n; ++i) {
            cin >> t[i] >> l[i] >> h[i];
        }
        int prev = 0,mn = m,mx = m;//mn == min,mx == max
        for(int i = 0;i < n; ++i) {
            mn -= t[i] - prev;
            mx += t[i] - prev;
            if(mn > h[i] || mx < l[i]) {
                flag = 1;
                break;
            }
            mn = max(mn,l[i]);
            mx = min(mx,h[i]);
            prev = t[i];
        }
        if(flag) cout << "No\n";
        else cout << "Yes\n";
    }
    return 0;
}

div2 620 C

标签:force   ++   lin   else   rev   pre   定义   div2   break   

原文地址:https://www.cnblogs.com/lukelmouse/p/12345377.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!