赞
踩
题目连接: 我怎么又被挤出红莲了
G有个餐厅,里面有个空调。这个空调有三个功能:
off 保持
将保持餐厅的温度不变
heatin 加热
在1分钟内将餐厅的温度提高一度
cooling 制冷
在1分钟内将餐厅的温度降低一度
来G餐厅的每个客人都有其自己觉得爽的温度区间,只要在他进门的一刻,餐厅的温度在他的温度区间内,那他就觉得爽。
现在G想知道能不能让所有人都爽
这个题其实就是问 空调调节温度范围与客人的温度区间有没有交集 。
只要有一个人和可调节范围没有交集,那么就不可能让所有人都爽;
反之大家一起爽
#pragma GCC diagnostic error "-std=c++11" #include <bits/stdc++.h> #define INF 0x3f3f3f3f #define ll long long #define Pair pair<int,int> #define re return #define getLen(name,index) name[index].size() #define mem(a,b) memset(a,b,sizeof(a)) #define Make(a,b) make_pair(a,b) #define Push(num) push_back(num) #define rep(index,star,finish) for(register int index=star;index<finish;index++) #define drep(index,finish,star) for(register int index=finish;index>=star;index--) using namespace std; template<class T> void _deb(const char *name,T val){ cout<<name<<val<<endl; } struct Interval{ int l,r; //left and right Interval(){} Interval(int left,int right){l=left,r=right;} Interval(int left,int right,int t){ l = left - t; r = right + t; } }; int q; void setInterval(Interval *ins,int t); void setInterval(Interval *ins,int l,int r); int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cin>>q; while(q--){ int n; int it; //initial temperature cin>>n>>it; bool flag=true; Interval temperature(it,it); int tlast=0; int t,l,r; while(n--){ cin>>t>>l>>r; if(!flag) continue; setInterval(&temperature,t-tlast); int nextl=max(temperature.l,l); int nextr=min(temperature.r,r); if(nextl<=nextr){ setInterval(&temperature,nextl,nextr); }else{ flag=false; } tlast=t; } if(flag) cout<<"YES"<<endl; else cout<<"NO"<<endl; } re 0; } void setInterval(Interval *ins,int t){ ins->l -= t; ins->r += t; } void setInterval(Interval *ins,int l,int r){ ins->l=l; ins->r=r; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。