51nod1428 活动安排问题(基础贪心)

来源:互联网 发布:如何更改淘宝邮箱帐号 编辑:程序博客网 时间:2024/06/02 01:22

题目链接:活动安排问题

1428 活动安排问题
基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题
 收藏
 关注
有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个教室? 
Input
第一行一个正整数n (n <= 10000)代表活动的个数。第二行到第(n + 1)行包含n个开始时间和结束时间。开始时间严格小于结束时间,并且时间都是非负整数,小于1000000000
Output
一行包含一个整数表示最少教室的个数。
Input示例
31 23 42 9
Output示例
2

思路:按开始时间排序


代码:

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<algorithm>#include<string>using namespace std;struct node {int s;int t;friend bool operator < (node a, node b){return a.s < b.s;}};int main(){ios::sync_with_stdio(false);cin.tie(0);int n;node data[10001];cin >> n;for (int i = 0; i < n; i++)cin >> data[i].s >> data[i].t;sort(data, data + n);int cnt = 1;int a[10001] = { 0 };for (int i = 0; i < n; i++){bool flag = false;for (int j = 0; j < cnt; j++){if (data[i].s >= a[j]){a[j] = data[i].t;flag = true;break;}}if (flag)continue;a[cnt] = data[i].t;cnt++;}cout << cnt << endl;return 0;}



原创粉丝点击