忙碌的Nova君 (活动安排问题、贪心算法)
题目描述
理论上,Nova君是个大闲人,但每天还是有一大堆事要干,大作业啦,创新杯啦,游戏啦,出题坑人啦,balabala......然而精力有限,Nova君同一时间只能做一件事,并不能一心二用。假设现在有N项工作等待Nova君完成,分别在 Si 时刻开始,在 Ti 时刻结束,对于每项工作可以选择做或者不做,但不可以同时选择时间重叠的工作(即使是开始的瞬间和结束的瞬间重叠也是不允许的)。Nova君自然希望尽量多做一些事情,那么最多能做几件事呢?
输入
多组测试数据(数据组数不超过10),对于每组数据,第一行输入一个正整数N,代表可选的工作数量,接下来输入N行,每行两个正整数,代表第 i 个工作的开始时间 si 和结束时间 ti 。
1<=N<=100000 | 1<=si<=ti<=10^9
输出
对于每组数据,输出一行,为可完成的工作的最大数量。
输入样例
5
1 3
2 5
4 7
6 9
8 10
输出样例
3
题目来源 :http://biancheng.love/contest/23/problem/E/index
解题思路:按照活动结束时间进行排序,先结束的排在前列,后结束的排在后面。
每次放入先结束的活动,将其的结束时间和下一个活动的开始时间进行比较,如果满足下一个活动在上个活动结束之后开始那么将该活动放入进来,依次进行操作,直到最后一个活动为止。输出结果为活动最多数目。
本题代码:
#include <bits/stdc++.h>
#define max_size 10010
using namespace std;
int order[max_size]; struct node{
int start,end;
int id;
}; node act[max_size]; bool cmp(node a,node b)
{
return a.end<b.end;
}; int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i=;i<n;i++)
{
scanf("%d%d",&act[i].start,&act[i].end);
act[i].id=i+;
}
sort(act,act+n,cmp);
order[]=;
int number=;
for(int i=;i<n;i++)
{
if(act[i].start>=act[order[number-]].end)
order[number++]=i;
}
cout<<number<<endl;
}
}
在之前的博客文章讲解活动安排的区别点:
1、之前博客讲述了dp求活动安排问题,也讲述了使用贪心求解。但是之前的问题默认输入的活动已经按照活动结束时间进行了排序,现在这个题目并没有排序。
2、之前的活动可以是下一个活动的开始正好是上一个活动的结束,但是这道题目要求不能够有重合。
下面给出之前博客的链接:http://www.cnblogs.com/zpfbuaa/p/4951105.html
忙碌的Nova君 (活动安排问题、贪心算法)的更多相关文章
- 51nod1428 活动安排问题 (贪心加暴力)
1428 活动安排问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动 ...
- 51nod 1428 活动安排问题 (贪心+优先队列)
来源:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428 首先按照开始时间从小到大排序. 其实只要维护一个结束时间的最 ...
- hdu 2037简单贪心--活动安排问题
活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子.该问题要求高效地安排一系列争用某一公共资源的活动.贪心算法提供了一个简单.漂亮的方法使得尽可能多的活动 ...
- hdu2037今年暑假不AC(贪心,活动安排问题)
今年暑假不AC Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submi ...
- A - 活动安排问题(贪心)
A - 活动安排问题 有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个教室? Input第一行一个正整数n (n <= ...
- [C++] 贪心算法之活动安排、背包问题
一.贪心算法的基本思想 在求解过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解. 从贪心算法的定义可以看出,贪心算法不是从整体上考 ...
- 贪心算法求解活动安排<算法分析>
一.实验内容及要求 1.要求按贪心算法原理求解问题: 2.要求手工输入s[10]及f[10],其中注意自己判断s[i]<f[i]: 3.要求显示所有活动及最优活动安排的i事件列表.二.实验步骤 ...
- C++贪心算法实现活动安排问题
问题描述: 设有n个活动的集合E={1,2,…,n},其中,每个活动都要求使用同一资源,而在同一时间内只有一个活动能使用这一资源.每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且s ...
- hdu2037-----------贪心, 活动安排问题
http://acm.hdu.edu.cn/showproblem.php?pid=2037(简单贪心-----活动安排) #include<iostream> #include<a ...
随机推荐
- 如何自学Android--转
原文地址:http://blog.csdn.net/lavor_zl/article/details/51217319 1. Java知识储备 本知识点不做重点讲解: 对于有基础的同学推荐看<J ...
- shell的重定向
>file 将file文件重定向为输出源,新建模式,可以将正确的结果输出到file文件 >>file 将file文件重定向为输出源,追加模式 <file 将file文件重定 ...
- Linux - 获取Shell命令帮助信息
Manual Page Chapter List 1:所有用户可以操作的指令或可执行文件 2:系统核心调用的函数与工具 3:子调用,常用的函数与函数库 4:设备,硬件文件说明,通常是/dev/的文件 ...
- iOS-Block的多种使用
一.图 二.代码 1.viewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewControll ...
- Solr搜索服务架构图
来源:http://www.open-open.com/lib/view/open1400576900081.html
- 《HelloGitHub月刊》第01期
<HelloGitHub月刊> 因为现在这个项目只有我自己做,只敢叫"月刊",希望有志同道合者,快点加入到这个项目中来!同时,如果您有更好的建议或者意见,欢迎联系我.联 ...
- Microsoft Visual Studio 2012 文档 下载地址 vs2012 中文帮助文档
https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=34794 下载地址: http://download.microsoft. ...
- 关于DOM树的常见增删操作
//具体关于DOM的内容可参考我的另外一篇文章"文本对象模型(Document Object Model)". 案例要点: 1.创建并增加元素节点 2.判断是否存在 ...
- No.012:Integer to Roman
题目: Given an integer, convert it to a roman numeral.Input is guaranteed to be within the range from ...
- .Net开源项目之开源论坛
.Net开源项目非常多,但是开源并且直接就能用的BBS项目就很少了,至少最近我在这上面没有找到一个合适的开源论坛.可能是因为我要求比较特殊,不但要开箱即用,还要用MVC+MySql开发. Discuz ...