zoukankan      html  css  js  c++  java
  • 区间问题

    区间问题的主要思想就是贪心

    重点是先将区间按左(右)边界排序,如何分辨要用左边界还是右边界就是一个大问题

    区间合并

    原题

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+10;
    int n;
    pair<int,int> q[N];
    int main(){
        std::ios::sync_with_stdio(false);
        cin>>n;
        for(int i=1;i<=n;i++)
            cin>>q[i].first>>q[i].second;
        sort(q+1,q+1+n);
        int r=q[1].second,ans=1;
        for(int i=2;i<=n;i++){
            if(q[i].first<=r)
            r=max(r,q[i].second);
            else ans++,r=q[i].second;
        }
        cout<<ans;
    }

    最小支配集和最大独立集

    代码相同

    具体证明(据说)及其复杂,这里就不说明了。

    原题:最小支配集    最大独立集

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+10;
    int n,ll;
    pair<int,int> q[N];
    int main(){
        std::ios::sync_with_stdio(false);
        cin>>n;
        for(int i=1;i<=n;i++)
            cin>>q[i].second>>q[i].first;
        sort(q+1,q+1+n);
        int r=q[1].first,ans=1;
        for(int i=2;i<=n;i++){
            if(q[i].second>r)
            ans++,r=q[i].first;
        }
        cout<<ans;
    }

    区间分组

    区间分组问题流程与上题差不多,区别就在于要将不重合的区间分组。

    原题

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+10;
    
    struct Node{
        int l,r;
        bool operator<(const Node &W)const{
        return l<W.l;
        }
    }node[N];
    
    int main(){
        int n;
        std::ios::sync_with_stdio(false);
        cin>>n;
        for(int i=0;i<n;i++){
            int l,r;
            cin>>l>>r;
            node[i]={l,r};
        }
    
        sort(node,node+n);
        priority_queue<int,vector<int>,greater<int> > heap;
        heap.push(node[0].r);
        for(int i=1;i<n;++i){
            if(node[i].l>heap.top())
                heap.pop();
                heap.push(node[i].r);
        }
        cout<<heap.size()<<endl;
        return 0;
    }
  • 相关阅读:
    软件工程评分表
    评论
    团队成员介绍
    第九天冲刺
    第八天冲刺
    第七天冲刺
    第六天冲刺
    第五天冲刺
    第四天冲刺
    第三天冲刺
  • 原文地址:https://www.cnblogs.com/myhnb/p/11243677.html
Copyright © 2011-2022 走看看