POJ 3190 Stall Reservations
来源:互联网 发布:生命之花 伤感网络歌曲 编辑:程序博客网 时间:2024/05/23 02:02
Stall Reservations
Description
Oh those picky N (1 <= N <= 50,000) cows! They are so picky that each one will only be milked over some precise time interval A..B (1 <= A <= B <= 1,000,000), which includes both times A and B. Obviously, FJ must create a reservation system to determine which stall each cow can be assigned for her milking time. Of course, no cow will share such a private moment with other cows.
Help FJ by determining:
Help FJ by determining:
- The minimum number of stalls required in the barn so that each cow can have her private milking period
- An assignment of cows to these stalls over time
Input
Line 1: A single integer, N
Lines 2..N+1: Line i+1 describes cow i's milking interval with two space-separated integers.
Lines 2..N+1: Line i+1 describes cow i's milking interval with two space-separated integers.
Output
Line 1: The minimum number of stalls the barn must have.
Lines 2..N+1: Line i+1 describes the stall to which cow i will be assigned for her milking period.
Lines 2..N+1: Line i+1 describes the stall to which cow i will be assigned for her milking period.
考虑到应该需要排列然后贪心,但是每次判断的项因为每一个数的插入二改变,这时可以考虑利用优先队列,注意此题应用优先队列为最小堆,需要在struct里面进行友元定义
至于priority_queue的简单的大小顶堆定义也可以通过声明时来定义:
priority_queue<TYPE,vector<TYPE>,greater<TYPE>> Q;
其中greater<TYPE>为大顶堆,less<TYPE>为小顶堆
#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<queue>#include<algorithm>using namespace std;const int maxn=50010;int s[maxn],ans,n;struct point{int a,b,cnt;friend bool operator < (point x,point y){return x.b>y.b;}}p[maxn];priority_queue<point> q;bool cmp(point x,point y){return x.a<y.a||(x.a==y.a&&x.b<y.b);}int main(){while(~scanf("%d",&n)){ans=0;memset(s,0,sizeof(s));memset(p,0,sizeof(p));for(int i=1;i<=n;i++){scanf("%d%d",&p[i].a,&p[i].b);p[i].cnt=i;}sort(p+1,p+n+1,cmp);s[p[1].cnt]=++ans; //N.B.此处并非s[1],而应是排列后的第一项q.push(p[1]);for(int i=2;i<=n;i++){point tmp=q.top();if(tmp.b<p[i].a){s[p[i].cnt]=s[tmp.cnt];q.pop();}else s[p[i].cnt]=++ans;q.push(p[i]);}printf("%d\n",ans);for(int i=1;i<=n;i++)printf("%d\n",s[i]);}return 0;}
0 0
- poj 3190 Stall Reservations
- POJ-3190-Stall Reservations
- POJ-3190-Stall Reservations
- POJ 3190 Stall Reservations
- POJ-3190-Stall Reservations
- poj 3190Stall Reservations
- poj 3190 Stall Reservations
- poj 3190 Stall Reservations
- POJ 3190 Stall Reservations
- POJ 3190 Stall Reservations
- poj 3190 Stall Reservations
- POJ 3190 Stall Reservations
- poj 3190 Stall Reservations
- POJ 3190 Stall Reservations
- POJ 3190 Stall Reservations
- poj 3190 Stall Reservations
- poj 3190 Stall Reservations
- POJ 3190 Stall Reservations
- java数据结构(二)——Set(HashSet,TreeSet),泛型,Map(HashMap,TreeMap)
- Iterator<FileItem>的使用,实现文件(图片)上传,限制图片格式,设置随机文件名
- 【腾讯Bugly干货分享】经典随机Crash之二:Android消息机制
- Apache安装以及配置
- NGINX
- POJ 3190 Stall Reservations
- waitKey (x)的两个作用
- codeforces710c Magic Odd Square
- 题目1107:搬水果
- LeetCode-515. Find Largest Value in Each Tree Row (JAVA)(二叉树每行的最大值)
- [Lpp]PHP的文件处理系统
- 继承ArrayAdapter类的实例
- UDP协议的客户机和服务器通信
- 13:最大上升子序列和