POJ 3190 Stall Reservations (贪心+优先队列)
来源:互联网 发布:midascft是什么软件 编辑:程序博客网 时间:2024/04/20 00:52
题目链接:http://poj.org/problem?id=3190
题目大意:这里有N只 (1 <= N <= 50,000) 挑剔的奶牛! 他们如此挑剔以致于必须在[A,B ]的时间内产奶(1 <= A <= B <= 1,000,000)当然, FJ必须为他们创造一个决定挤奶时间的系统.当然,没有牛想与其他奶牛分享这一时光
帮助FJ做以下事:
使每只牛都有专属时间的最小牛棚数
每只牛在哪个牛棚
也许有很多可行解。输出一种即可。
思路:对奶牛进行排序(开始时间升序,结束时间升序);用一个优先队列记录在牛棚中的牛(入队相当于进牛棚),并且以结束时间早优先。一个奶牛先与队列头比较,如果这头奶牛的开始时间晚于牛棚里的牛的结束时间,那么就可以进入这个牛棚;如果这头奶牛的开始时间早于牛棚里的牛的结束时间,那么必须开辟一个新的牛棚。用一个数组记录奶牛所在牛棚编号。
下面是代码:
#include<iostream> #include<cstdio>#include<cstring>#include<queue>#include<algorithm>#define LL long long#define EPS 1e-5using namespace std;struct point{ int l,r,k; friend bool operator<(point a,point b) { return a.r>b.r; } }num[50005];int cmp(point a,point b){ if(a.l!=b.l) return a.l<b.l; else return a.r<b.r;} int n,h[50005];priority_queue<point> q;int main(){ while(~scanf("%d",&n)) { for(int i=0;i<n;i++) scanf("%d%d",&num[i].l,&num[i].r),num[i].k=i; sort(num,num+n,cmp); int t=1; q.push(num[0]); h[num[0].k]=t++; for(int i=1;i<n;i++) { point tmp=q.top(); if(tmp.r<num[i].l) //前一头牛利用完了牛棚 { h[num[i].k]=h[tmp.k]; //该头牛的牛棚编号与前一头的相同 q.pop(); //前一头牛出牛棚 } else //之前的牛棚都在使用 { h[num[i].k]=t++; //改头牛将进入新的牛棚 } q.push(num[i]); //该头牛进入牛棚 } while(!q.empty()) //清空队列 q.pop(); printf("%d\n",t-1); for(int i=0;i<n;i++) printf("%d\n",h[i]); }}
阅读全文
0 0
- Poj 3190 Stall Reservations【贪心+优先队列】
- POJ-3190-Stall Reservations-优先队列+贪心
- POJ 3190 Stall Reservations(贪心+优先队列优化)
- POJ 3190 Stall Reservations (贪心、优先队列/set)
- poj 3190 Stall Reservations(区间贪心,优先队列)
- POJ 3190 Stall Reservations(贪心+优先队列)
- poj 3190 Stall Reservations (贪心+优先队列)
- POJ 3190 Stall Reservations (贪心+优先队列)
- POJ 3190 Stall Reservations 贪心+优先队列或set
- POJ 3190 Stall Reservations-奶牛分栏(区间贪心,优先队列)
- POJ 3190 Stall Reservations(贪心—区间问题+优先队列维护)
- POJ 3190 - Stall Reservations(贪心)
- POJ 3190 Stall Reservations(贪心)
- poj 3190 Stall Reservations(贪心)
- [POJ 3190] Stall Reservations (区间贪心)
- Stall Reservations(POJ 3190, 贪心)
- POJ3190 Stall Reservations (贪心+优先队列)
- Stall Reservations - POJ 3190 贪心
- Io 异常: The Network Adapter could not establish the connection
- Revit二次开发——读取构件的材料外观信息
- Python Requests库简明使用教程
- 《大唐姻缘传》(李治篇)第三章 顺朕意媚娘进宫 诞龙儿福运连连
- jquery学习之几种过滤选择器
- POJ 3190 Stall Reservations (贪心+优先队列)
- Redis数据结构和内部编码--有序集合(SortedSet)
- 从linux进程的角度看Docker
- OpenCV 图像清晰度评价(相机自动对焦)
- 最坏情况下保证时间复杂度为N*logN的快速排序
- struts2_拦截器的原理
- json基本的使用方法
- 四位密码锁*电子密码锁的设计
- leetcode 59. Spiral Matrix II