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

贪心:区间调度问题

时间:2015-04-07 23:00:12      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

贪心:区间调度问题

贪心:区间调度问题

有 n 项工作,每项工作分别在 si 时间开始,在 ti 时间结束。对于每项工作,你都可以选择参与与否。参与工作的时间段不能重复 (开始的瞬间和结束的瞬间重叠也是不允许的)

分析:在可选的工作中,每次都选取结束时间最早的工作
// CreateTime: 2015-04-07 21:45:48

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <queue>

using namespace std;

const int maxn = 100005;
pair<int, int> v[maxn];
int s[maxn];
int t[maxn];

int cmp(pair<int, int> a, pair<int, int> b) {
    return a.first < b.first;
}

void solve() {

}

int main(void) {
    int n;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &s[i]);
    }
    for (int i = 0; i < n; i++) {
        scanf("%d", &t[i]);
    }
    for (int i = 0; i < n; i++) {
        v[i] = make_pair(s[i], t[i]);
    }
    sort(v, v+n, cmp);
    int t = -1;
    int ans = 0;
    for (int i = 0; i < n; i++) {
        if (v[i].first > t) {
            t = v[i].second;
            ans++;
        }
    }
    printf("%d\n", ans);

    return 0;
}

贪心:区间调度问题

标签:

原文地址:http://www.cnblogs.com/sunznx/p/4399682.html

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