POJ 3190 priority_queue 贪心
2016-09-14 23:52
295 查看
思路:
贪心?就算是吧
先把所有的开始时间排个序
如果当前的能匹配上已有的牛栏,就找开始时间最早的那个。
否则新加一个牛栏
整个过程用priority_queue实现就OK了。。
贪心?就算是吧
先把所有的开始时间排个序
如果当前的能匹配上已有的牛栏,就找开始时间最早的那个。
否则新加一个牛栏
整个过程用priority_queue实现就OK了。。
//By SiriusRen #include <queue> #include <cstdio> #include <algorithm> using namespace std; int n,t=1,s[55555]; struct Node {int pos,begin,end;}node[55555]; struct Sirius{int time,num;}jy; priority_queue<Sirius>pq; bool operator<(Sirius a,Sirius b){return a.time>b.time;} bool cmp(Node a,Node b){return a.begin<b.begin;} int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d%d",&node[i].begin,&node[i].end); node[i].pos=i; } sort(node+1,node+1+n,cmp); jy.num=1;jy.time=node[1].end; pq.push(jy); s[node[1].pos]=1; for(int i=2;i<=n;i++){ if(node[i].begin>pq.top().time){ jy=pq.top(); pq.pop(); s[node[i].pos]=jy.num; jy.time=node[i].end; pq.push(jy); } else{ t++; jy.time=node[i].end; jy.num=t; s[node[i].pos]=t; pq.push(jy); } } printf("%d\n",t); for(int i=1;i<=n;i++)printf("%d\n",s[i]); }
相关文章推荐
- POJ 3190 priority_queue 贪心
- POJ 2437 贪心+priority_queue
- POJ 2437 贪心+priority_queue
- POJ -3190 Stall Reservations (贪心+优先队列)
- POJ 1862 Stripies (priority_queue 优先队列)
- POJ 3190 Stall Reservations(贪心)
- POJ3190 Stall Reservations - 模拟 - 贪心 (差分)
- Stall Reservations (poj 3190 贪心)
- POJ-3190-Stall Reservations-优先队列+贪心
- POJ 3190 (贪心)
- POJ3190 Stall Reservations 【贪心】
- POJ 3190 Stall Reservations-奶牛分栏(区间贪心,优先队列)
- POJ -3190 Stall Reservations(贪心+堆或multiset)
- 【简单贪心+优先对列】C - 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 3253 STL priority_queue