codeforces 620C air conditioner

题意:一个餐厅给定测试样例的大小,客人的数量以及餐厅的初始温度,再分别给出能够让每个客人感到舒适的温度范围和他们到达餐厅的时间。
空调升温每分钟1度 降温每分钟一度 或者关掉温度不升不降
问:能否通过调节使得没位客人都能够在他们进餐的的那一分钟内餐厅温度在他们的舒适的范围内
思路:这道题问的只是可行性具体操作不用我们管,那么我们只需要把一位客人到的时间和当前客人到的时间做差,在这个时间差内空调可调节的温度区间范围为(l-cha,r+cha)只要这个区间和当前客人的温度舒适区间有交集即表明这个温度可以到达 可行 之后改变区间 只要这个区间不合法(l>r)时即代表区间无交集 标记退出即可

学会这种操作的思想 有问题的可行性来求解问题

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
struct node
{
    
    
    int t;
    int l;
    int h;
}cu[107];

int main()
{
    
    
    int q;
    cin>>q;
    while(q--)
    {
    
    
        int n,m;
        cin>>n>>m;
        int temp = m;// 记录下饭店的初始温度
        for(int i = 1;i <= n;i ++)
        {
    
    
            cin>>cu[i].t>>cu[i].l>>cu[i].h;
        }
        int L = temp,R = temp,time = 0;
        int flag = 0;
        cu[0].t = 0;
        for(int i = 1;i <= n;i ++)
        {
    
    
            int cha = cu[i].t - cu[i-1].t;
            L = L - cha;
            R = R + cha;
            L = max(L,cu[i].l);
            R = min(R,cu[i].h);
            if(L > R)
            {
    
    
                flag = 1;
                break;
            }
        }
        if(!flag)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_45672411/article/details/104423367