多线程区间覆盖问题贪心,同一时刻能看k个节目,求最多能看几个节目

克总:

#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> pr;
multiset<int,greater<int> >s;
int main(){
    int n,k;
    scanf("%d %d", &n, &k);
    vector<pr>v(n);
    for(int i = 0;i < n;i++)
    scanf("%d %d", &v[i].second, &v[i].first);
    sort(v.begin(),v.end());
    for(int i = 0;i < k;i++)s.insert(0);
    int cnt = 0;
    for(pr &i : v){
        auto it = s.lower_bound(i.second);
        if(it != s.end()){
            s.erase(it);
            s.insert(i.first);
            cnt++;
        }
    }
    printf("%d\n",cnt);
}
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> pr;
multiset<int,greater<int> >s;
int main(){
    int n,k;
    scanf("%d %d", &n, &k);
    vector<pr>v;
    for(int i = 0;i < n;i++)
    scanf("%d %d", &v[i].second, &v[i].first);
    sort(v.begin(),v.end());
    for(int i = 0;i < k;i++)s.insert(0);
    int cnt = 0;
    for(int i=0;i<n;i++)
    {
        auto it = s.lower_bound(v[i].second);
        if(it != s.end()){
            s.erase(it);
            s.insert(v[i].first);
            cnt++;
        }
    }
    printf("%d\n",cnt);

猜你喜欢

转载自blog.csdn.net/qq_42756710/article/details/81232565