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 (贪心+优先队列)