优先队列的尝试 (Stall Reservations)
来源:互联网 发布:登录mysql命令 编辑:程序博客网 时间:2024/06/16 22:08
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
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.
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.
51 102 43 65 84 7
412324
Explanation of the sample:
Here's a graphical schedule for this output:
Here's a graphical schedule for this output:
Time 1 2 3 4 5 6 7 8 9 10Stall 1 c1>>>>>>>>>>>>>>>>>>>>>>>>>>>Stall 2 .. c2>>>>>> c4>>>>>>>>> .. ..Stall 3 .. .. c3>>>>>>>>> .. .. .. ..Stall 4 .. .. .. c5>>>>>>>>> .. .. ..Other outputs using the same number of stalls are possible.
这道题仅仅用贪心的话会超时,所以需要用优先队列优化
题解:
点击打开链接http://blog.csdn.net/qq_25077279/article/details/48978303
有关优先队列的博客:
点击打开链接http://www.cnblogs.com/heqinghui/p/3225407.html
点击打开链接http://www.cnblogs.com/luoxn28/p/5616101.html
点击打开链接http://blog.csdn.net/u011240016/article/details/59266961
超时代码:
#include<cstdio>#include<string.h>#include<algorithm>using namespace std;struct list{int bi;int en;int num;int sta;}an[50010];bool cmp(struct list a,struct list b){return a.bi<b.bi;}bool com(struct list a,struct list b){return a.num<b.num;}int main(){int n,i,max,j,cnt;max=0,cnt=1;memset(an,0,sizeof(an));scanf("%d",&n);for(i=0;i<n;i++){scanf("%d%d",&an[i].bi,&an[i].en);an[i].num=i;if(an[i].bi>max)max=an[i].bi;}sort(an,an+n,cmp);for(i=0;i<n;i++){int end;if(an[i].sta!=0)continue;else{an[i].sta=cnt;end=an[i].en;if(an[i].en>max){cnt++;continue;}}for(j=i+1;j<n;j++){if(an[i].en>max)break;if(an[j].sta!=0)continue;if(an[j].bi>end){an[j].sta=cnt;end=an[j].en;}}cnt++;}sort(an,an+n,com);printf("%d\n",cnt-1);for(i=0;i<n;i++){printf("%d\n",an[i].sta);}return 0; }
ac代码:
#include<cstdio>#include<string.h>#include<algorithm>#include<queue>using namespace std;struct list{int bi;int en;int num;int sta;friend bool operator < (struct list a,struct list b){return a.en>b.en; //注意操作符 }}an[50010];bool cmp(struct list a,struct list b){return a.bi<b.bi;}bool com(struct list a,struct list b){return a.num<b.num;}int main(){int n,i,cnt;priority_queue <struct list> q;cnt=1;memset(an,0,sizeof(an));scanf("%d",&n);for(i=0;i<n;i++){scanf("%d%d",&an[i].bi,&an[i].en);an[i].num=i;}sort(an,an+n,cmp);an[0].sta=cnt; //注意 q.push(an[0]);for(i=1;i<n;i++){if(an[i].bi<=q.top().en){cnt++;an[i].sta=cnt;q.push(an[i]);}else{an[i].sta=q.top().sta;q.pop();q.push(an[i]);}}sort(an,an+n,com);printf("%d\n",cnt);for(i=0;i<n;i++){printf("%d\n",an[i].sta);}return 0; }
阅读全文
0 0
- 优先队列的尝试 (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【贪心+优先队列】
- POJ3190 Stall Reservations (贪心+优先队列)
- POJ-3190-Stall Reservations-优先队列+贪心
- POJ 3190 Stall Reservations-奶牛分栏(区间贪心,优先队列)
- POJ 3190 Stall Reservations 贪心+优先队列或set
- POJ 3190 Stall Reservations(贪心—区间问题+优先队列维护)
- POJ3190:Stall Reservations(贪心)
- Stall Reservations
- Stall Reservations
- poj3190Stall Reservations(贪心+优先队列)
- POJ 3190 - Stall Reservations(贪心)
- python在pandas.DataFrame添加一行
- java ==和equals
- Java字节流与和字符流区别之分
- 修改CheckBox选择框、设置选择框颜色
- python中的单引号,双引号,三引号
- 优先队列的尝试 (Stall Reservations)
- 待填坑
- jquery动画
- H.266的目前探索的情况
- Catch That Cow POJ
- C++ 总结一
- 京东商城数据爬取
- javax.mail 发送中文主题subject中文乱码
- 栈实现后缀表达式求值