区间调度问题 ----- 贪心算法

来源:互联网 发布:大数据风控平台价格 编辑:程序博客网 时间:2024/05/19 05:30

问题:

            有 n 项工作,每项工作分别在 S[i] 时间开始, 在 T[i] 时间结束 。对于每项

工作,你都有可以选择参与与否。如果选择了参与, 那么自始自终都必须全程参与。

此外,参与工作的时间段不能重叠(即使是开始的瞬间和结束的瞬间的重叠也

是不允许的)。


代码:


#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int MAX_N = 100000;int N, S[MAX_N], T[MAX_N];pair<int, int> itv[MAX_N];int main(){cin >> N;for(int i = 0; i < N; i++){cin >> S[i];}for(int j = 0; j < N; j++){cin >> T[j];}for(int i = 0; i < N; i++){itv[i].first = T[i];itv[i].second = S[i];}sort(itv, itv + N);int ans = 0, t = 0;for(int i = 0; i < N; i++){if(t < itv[i].second){ans++;t = itv[i].first;}}cout<<ans<<endl;return 0;}




0 0