[问题描述]
有多台机器处理n个作业,设作业i的开始时间为si,结束时间为ti,则对n个作业进行机器分配,设计算法进行合理调度,使得处理n个作业所需要的机器数最少。
[基本要求]
(1)一台机器同一时刻只能处理一个作业;
(2)一个作业不能同时由两台机器上处理;
#include <iostream>
#include <cmath>
#include<algorithm>
using namespace std;
const int N = 1e8 + 100;
int n;
int l[N], r[N];
struct cym
{
int loc;
bool flag;
}a[N];
bool cmp(cym x, cym y)
{
return x.loc < y.loc;
}
int main()
{
cin >> n;
for(int i = 1; i <= n; i++)
{
cin >> l[i] >> r[i];
}
for(int i = 1; i <= n; i++)
{
a[2 * i - 1].loc = l[i];
a[2 * i - 1].flag = 0;
a[2 * i].loc = r[i];
a[2 * i].flag = 1;
}
sort(a + 1, a + (2 * n) + 1, cmp);
int ans = 0, maxx = 0;
for(int i = 1; i <= 2 * n; i++)
{
ans += (a[i].flag) ? -1 : 1;
maxx = max(maxx, ans);
}
cout << maxx;
return 0;
}