标签:
表示你喜欢看的节目的总数,然后是n行数据,每行包括两个数据Ti_s,Ti_e (1<=i<=n),分别表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。n=0表示输入结束,不做处理。求最多看的电视数目
将电视按结束时间排序,遍历电视开始时间是否小于 记录的上个电视的结束时间
1 for(int i = 1 ; i < n ; i ++){ 2 if(tv[i].s >= endtime){ 3 cnt++; 4 endtime = tv[i].e; 5 } 6 }
#include<cstdio> #include<iostream> #include<queue> #include<string> #include<math.h> #include<stack> #include<cstdlib> #include<set> #include<map> #include<cstring> #include<vector> #include<algorithm> #include<cctype> #include<sstream> const double PI = acos(-1.0); typedef long long ll; using namespace std; int n; struct Node{ int s,e; }; Node tv[110]; bool cmp(const Node& lhs,const Node& rhs){ return lhs.e < rhs.e; } void solve(){ int cnt = 1; int endtime = tv[0].e; for(int i = 1 ; i < n ; i ++){ if(tv[i].s >= endtime){ cnt++; endtime = tv[i].e; } } printf("%d\n",cnt); } int main(){ while(scanf("%d",&n) != EOF && n){ for(int i = 0 ; i < n ; i ++) scanf("%d %d",&tv[i].s,&tv[i].e); sort(tv,tv+n,cmp); solve(); } return 0; }
标签:
原文地址:http://www.cnblogs.com/zstu-jack/p/5289834.html