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

hihocoder-1309-任务分配

时间:2017-10-15 19:52:58      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:logs   enter   任务   限制   code   终结点   log   hihocoder   输入   

hihocoder-1309-任务分配

 

1309 : 任务分配

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

给定 N 项任务的起至时间( S1E1 ), ( S2E2 ), ..., ( SNEN ), 计算最少需要多少台机器才能按时完成所有任务。

同一时间一台机器上最多进行一项任务,并且一项任务必须从头到尾保持在一台机器上进行。任务切换不需要时间。

输入

第一行一个整数 N,(1 ≤ N ≤ 100000),表示任务的数目。 以下 N 行每行两个整数 SiEi,(0 ≤ Si < Ei ≤ 1000000000),表示任务的起至时间。

输出

输出一个整数,表示最少的机器数目。

样例输入
5
1 10
2 7
6 9
3 4
7 10
样例输出
3

 

题解:

模拟整个流程。

用map将起始点 和 终结点结合起来。 起始点 += 1, 终结点 -= 1, 然后对这个 map 进行遍历即可得到 answer。 

类似的, 也可以用来求完成任务的最大资源需求, 将上面的 1 改为 资源需求量即可。

 

#include <cstdio> 

#include <map> 
using namespace std; 

int main(){
	freopen("in.txt", "r", stdin); 

	int n, s, e, ans; 
	while(scanf("%d", &n ) != EOF){
		map<int, int> mp; 
		for(int i=1; i<=n; ++i){
			scanf("%d %d", &s, &e); 
			mp[s] += 1; 
			mp[e] -= 1; 
		}

		ans = 0; 

		int cur = 0; 
		for(auto iter = mp.begin(); iter != mp.end(); ++iter){
			cur += iter->second; 
			if(ans < cur){
				ans = cur; 
			}
		}

		printf("%d\n", ans );
	}
	return 0; 
} 

  

hihocoder-1309-任务分配

标签:logs   enter   任务   限制   code   终结点   log   hihocoder   输入   

原文地址:http://www.cnblogs.com/zhang-yd/p/7672834.html

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