POJ-3190-贪心(优先队列)
2014-07-15 23:36
519 查看
Stall Reservations
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: 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 Many answers are correct for each test dataset; a program will grade your answer. 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. 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. Sample Input 5 1 10 2 4 3 6 5 8 4 7 Sample Output 4 1 2 3 2 4 Hint Explanation of the sample: Here's a graphical schedule for this output: Time 1 2 3 4 5 6 7 8 9 10 Stall 1 c1>>>>>>>>>>>>>>>>>>>>>>>>>>> Stall 2 .. c2>>>>>> c4>>>>>>>>> .. .. Stall 3 .. .. c3>>>>>>>>> .. .. .. .. Stall 4 .. .. .. c5>>>>>>>>> .. .. .. Other outputs using the same number of stalls are possible. Source USACO 2006 February Silver 该题的解题思路就不多说了,优先队列。看代码应该能够很好地理解! #include<stdio.h> #include<queue> #include<algorithm> using namespace std; struct P { int x,y; int p; friend bool operator<(P m,P n) { return m.y>n.y; //右边界最小值优先 } }a[50005]; bool cmp(P m,P n) { return m.x<n.x; } int main() { int n; int b[50005]; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d%d",&a[i].x,&a[i].y); a[i].p=i; } sort(a,a+n,cmp); int z=0; b[a[0].p]=++z; priority_queue<P>q; q.push(a[0]); for(int i=1;i<n;i++) { P t=q.top(); if(a[i].x>t.y) { b[a[i].p]=b[t.p]; q.pop(); q.push(a[i]); } else { b[a[i].p]=++z; q.push(a[i]); } } printf("%d\n",z); for(int i=0;i<n;i++) printf("%d\n",b[i]); return 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 贪心(区间)+优先队列维护
- POJ 3190 Stall Reservations(贪心+优先队列)
- POJ 3190 Stall Reservations - 贪心+优先队列
- poj 3190 Stall Reservations (贪心+优先队列)
- poj 3190 Stall Reservations(区间贪心,优先队列)
- POJ - 3190 Stall Reservations 贪心 + 优先队列
- POJ 3190 贪心+优先队列
- POJ -3190 Stall Reservations (贪心+优先队列)
- Stall Reservations(POJ 3190 贪心+优先队列)
- poj 3190 贪心+优先队列优化
- POJ 1328 3190 贪心 优先队列
- poj 3190 优先队列+贪心