码迷,mamicode.com
首页 > 其他好文 > 详细

NYOJ-14:会场安排问题

时间:2016-05-13 04:39:57      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

描述
学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活动,每个时间最多安排一个活动。现在小刘有一些活动计划的时间表,他想尽可能的安排更多的活动,请问他该如何安排。
输入
#include<iostream>
#include<cstdio>
#include<cstring>
#define N 1001
#include<algorithm>
using namespace std;
struct time
{
	int b;
	int e;
}s[N];


int cmp(time a,time c)
{
	return a.e<c.e ;
}
int main()
{
	int t,i,j,h,m;
	cin>>t;
	while(t--)
	{ 
	  memset(s,0,sizeof(s));
		cin>>m;
		for(i=0;i<m;i++)
	scanf("%d%d",&s[i].b,&s[i].e); 
		sort(s,s+m,cmp);
		h=i=1;
		j=0;
		while(i<m)
		{
			if(s[j].e<s[i].b)
			{
		       h++;
		       j=i;
			   i++; 
			}
			else
			i++;
		}
		cout<<h<<endl;
	}
	return 0;
}自己的代码,感觉是一样,但是提交总是编辑错误,什么原因。
这题主要用到结构体排序

第一行是一个整型数m(m<100)表示共有m组测试数据。
每组测试数据的第一行是一个整数n(1<n<10000)表示该测试数据共有n个活动。
随后的n行,每行有两个正整数Bi,Ei(0<=Bi,Ei<10000),分别表示第i个活动的起始与结束时间(Bi<=Ei)
输出
对于每一组输入,输出最多能够安排的活动数量。
每组的输出占一行
样例输入
2
2
1 10
10 11
3
1 10
10 11
11 20
样例输出
1
2
[cpp] view plain copy
  1. #include<iostream>  
  2. #include<cstdio>  
  3. #include<cstring>  
  4. #include<algorithm>  
  5. #define N 10005  
  6. using namespace std;  
  7. /*贪心算法,按照节目的最早结束时间来选*/  
  8. struct Act  
  9. {  
  10.     int b,e;  
  11. };  
  12. struct Act act[N];  
  13. bool Cmp(struct Act a,struct Act b)  
  14. {  
  15.     return a.e<b.e;  
  16. }  
  17. int main()  
  18. {  
  19.     int n,m;  
  20.     cin>>m;  
  21.       
  22.     while(m--)  
  23.     {  
  24.         memset(act,0,sizeof(act));  
  25.         cin>>n;  
  26.         int i,cnt,j;  
  27.         for(i=0;i<n;i++)  
  28.             scanf("%d%d",&act[i].b,&act[i].e);  //用cin有可能会超时  
  29.         sort(act,act+n,Cmp);//按结束时间从早到晚排序  
  30.         cnt = i = 1;  
  31.         j = 0;  //用以记录当前被选的活动  
  32.         while(i<n)  
  33.         {  
  34.             if(act[j].e<act[i].b)  
  35.             {  
  36.                 cnt++;  //安排的活动数  
  37.                 j = i;  
  38.                 i++;  
  39.             }  
  40.             else i++;  
  41.         }  
  42.         cout<<cnt<<endl;  
  43.     }  
  44.     return 0;  
  45. }  

NYOJ-14:会场安排问题

标签:

原文地址:http://blog.csdn.net/xjcjichao10/article/details/51340115

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!