区间调度问题/开会问题

#include<bits\stdc++.h>
using namespace std;

const int MAX_N = 100000;

int N, S[MAX_N], T[MAX_N];

pair<int, int> itv[MAX_N];

void solve()
{
    // 因为pair进行的是字典序排序
    // 所以为了让结束时间早的工作排在前面,把T(结束时间)存到first中
    for (int i = 0; i < N; i++)
    {
        itv[i].first = T[i];
        itv[i].second = S[i];
    }
    sort(itv, itv + N);

    // t是最后所选工作的结束时间
    int ans = 0, t = 0;
    for (int i = 0; i < N; i++)
    {
        if(t < itv[i].second)
        {
            ans++;
            t = itv[i].first;
        }
    }

    cout << ans;
}
发布了58 篇原创文章 · 获赞 6 · 访问量 7054

猜你喜欢

转载自blog.csdn.net/weixin_43569916/article/details/103979543