贪心问题

来源:互联网 发布:赵薇数据 编辑:程序博客网 时间:2024/04/24 08:36

活动选择问题

Time Limit: 1000MS Memory limit: 65536K

题目描述

 sdut 大学生艺术中心每天都有n个活动申请举办,但是为了举办更多的活动,必须要放弃一些活动,求出每天最多能举办多少活动。

输入

 输入包括多组输入,每组输入第一行为申请的活动数n,从第2行到n+1行,每行两个数,是每个活动的开始时间b,结束时间e;

输出

 输出每天最多能举办的活动数。

示例输入

1215 2015 198 1810 154 146 125 102 93 80 73 41 3

示例输出

5

此题正解为先按结束时间从小到大排,再按开始时间由大到小排出n个序列,找最长的一个序列

#include<stdio.h>  #include<algorithm>  using namespace std;  struct sa  {      int start,end;  }data[1007];    int cmp(const sa &a,const sa &b)  {      return a.end<b.end;  }    int main()  {      int m;      while(scanf("%d",&m)!=EOF)      {          for(int i=0;i<m;i++)          scanf("%d%d",&data[i].start,&data[i].end);          sort(data,data+m,cmp);          sa temp=data[0];          int count=1;          for(int j=0;j<m;j++)          {              if(temp.end<=data[j].start)              {                  count++;                  temp=data[j];              }            }          printf("%d\n",count);      }      return 0;  }  


0 0