本文主要是介绍Educational Codeforces Round 27-C. Two TVs,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意:Polycarp有两台电视,他想看一些电视节目,他知道一些电视开始和结束的时间,现在他想知道有两台电视他能不能播放所有的节目,注意:一个节目结束的时间不能播放其他节目。
思路:把电视节目的开始和结束时间都拆成两个部分,分别标记一些,在根据增序进行排序,遍历结束和开始时间,用一个cnt进行维护,如果出现cnt>2,则不能播放所有的节目。
#include <bits/stdc++.h>using namespace std;const int maxn=4e5+10;
struct Node
{int mark;int t;
} node[maxn];
bool cmp(Node n1,Node n2)
{return n1.t<n2.t||(n1.t==n2.t&&n1.mark>n2.mark);
}
int main()
{int n;cin>>n;int cnt=0;for(int i=1; i<=n; i++){int l,r;cin>>l>>r;node[cnt].mark=1;node[cnt++].t=l;node[cnt].mark=-1;node[cnt++].t=r;}int ans=0;sort(node,node+cnt,cmp);for(int i=0; i<cnt; i++){ans+=node[i].mark;if(ans>2){cout<<"NO"<<endl;return 0;}}cout<<"YES"<<endl;
}
这篇关于Educational Codeforces Round 27-C. Two TVs的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!