111. 畜栏预定贪心

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了111. 畜栏预定贪心相关的知识,希望对你有一定的参考价值。

经典的贪心问题,和分组问题很像。不过这里我们还得维护坐标信息。

#include<bits/stdc++.h>
using namespace std;
#define x first
#define y second;
const int N=1e5+10;
typedef pair<int,int> PII;
struct nodeint l,r,id;;
bool cmp(node a,node b)

    if(a.l!=a.l) return a.r<b.r;
    return a.l<b.l;

vector<node>ve;
int n,ans[N];
int main(void)

    cin>>n;
    for(int i=1;i<=n;i++)
    
        int l,r; cin>>l>>r;
        ve.push_back(l,r,i);
    
    sort(ve.begin(),ve.end(),cmp);
    priority_queue<PII,vector<PII>,greater<PII> >q;//小根堆 存每组最后一个数
    for(int i=0;i<n;i++)
    
        int l=ve[i].l,r=ve[i].r;
        if(!q.size()) q.push(r,q.size()+1),ans[ve[i].id]=q.size();
        else
        
            auto temp=q.top();
            int x=temp.x,id=temp.y;
            if(x<l) 
            
                q.pop();
                q.push(r,id);
                ans[ve[i].id]=id;
            else
            
                q.push(r,q.size()+1);
                ans[ve[i].id]=q.size();
            
        
    
    cout<<q.size()<<endl;
    for(int i=1;i<=n;i++) cout<<ans[i]<<endl;
    return 0;

以上是关于111. 畜栏预定贪心的主要内容,如果未能解决你的问题,请参考以下文章

贪心算法 - 挤奶问题

POJ 3190 Stall Reservations (贪心+优先队列)

区间分组 Stall Reservations

贪心+二分疯牛

Random Maze HDU - 4067(预定义状态建边(贪心建边))

POJ 2456 Aggressive cows ( 二分 && 贪心 )