poj3190 贪心
来源:互联网 发布:非洲提督知乎 编辑:程序博客网 时间:2024/06/06 14:10
如题:http://poj.org/problem?id=3190
Description
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
Lines 2..N+1: Line i+1 describes cow i's milking interval with two space-separated integers.
Output
Lines 2..N+1: Line i+1 describes the stall to which cow i will be assigned for her milking period.
Sample Input
51 102 43 65 84 7
Sample Output
412324
Hint
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.
Source
题目很容易就能懂,给出几个区间,不能重叠,问需要的最小stall。
首先对输入数据排序,按左端点小->大,然后开始遍历,每次插入一个后,用优先队列维护。维护的是右端点最小。
不难发现,每次插入最左端,那么只用判断右端点,每次选择右端点最小的那个插入,最终方案最优,如果最小的那个都有重叠区间,那么stall的数量只能再+1了。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<queue>
using namespace std;
#define min(a,b)(a< b?a:b)
struct node
{
int l,r;
int pos;
};
node Line[50005];
int stall[50005];
int cmp(node &a,node &b)
{
if(a.l!=b.l)
return a.l<b.l;
return a.r<b.r;
}
class cmp1
{
public:
bool operator()(node&a,node&b)
{
return a.r>b.r;
}
};
int main()
{
// freopen("C:\\1.txt","r",stdin);
int N,num=1;
scanf("%d",&N);
int i;
for(i=0;i<N;i++)
{
scanf("%d%d",&Line[i].l,&Line[i].r);
Line[i].pos=i+1;
}
sort(Line,Line+N,cmp);
priority_queue<node,vector<node>,cmp1>que;
que.push(Line[0]);
stall[Line[0].pos]=1;
i=1;
while(i<N)
{
node p=que.top();
if(Line[i].l>p.r)
{
que.pop();
stall[Line[i].pos]=stall[p.pos];
}
else if(Line[i].l<=p.r)
{
num++;
stall[Line[i].pos]=num;
}
que.push(Line[i]);
i++;
}
printf("%d\n",num);
for(i=1;i<=N;i++)
printf("%d\n",stall[i]);
}
- poj3190 贪心
- POJ3190 Stall Reservations 贪心
- poj3190 (mulitset贪心)
- POJ3190 Stall Reservations 【贪心】
- poj3190 区间贪心 + STL
- Stall Reservations - POJ3190 贪心
- poj3190 poj2393 贪心
- poj3190(区间贪心)
- 贪心(好题)--poj3190
- poj3190(贪心,优先队列)
- POJ3190:Stall Reservations(贪心)
- poj3190
- poj3190
- POJ3190
- poj3190
- POJ3190
- poj3190
- POJ3190——Stall Reservations(贪心)
- redisDemo
- 基于JavaScript的在线语音识别库Julius
- (libgdx)TexturePacker的基本使用(2)
- POJ 3421 - X-factor Chains(数学)
- Swift-关联类型
- poj3190 贪心
- 需求与设计人员如何配合工作
- 119_动态创建fragment笔记
- D3D9 effect研究及学习
- 图像处理之基于Otsu阈值二值化
- C语言知识点总结
- fstream的使用方法介绍
- Decode Ways
- Java—Timer和TimerTask详解(常用API)