【POJ - 3190 】Stall Reservations(贪心+优先队列)
Stall Reservations
原文是English,这里直接上中文吧
Descriptions:
帮助FJ做以下事:
- 使每只牛都有专属时间的最小牛棚数
- 每只牛在哪个牛棚
也许有很多可行解。输出一种即可,采用SPJ
Input
第 2..N+1行: 第 i+1行 描述了i号奶牛挤奶的起止时间
Output
Lines 2..N+1: 第 i+1行 描述了i奶牛被安排的牛棚
Sample Input
5
1 10
2 4
3 6
5 8
4 7
Sample Output
4
1
2
3
2
4
首先,把所有奶牛按挤奶开始时间从小到大排序。
然后,为第一头奶牛分配一个畜栏。
最后,依次处理后面每头奶牛i。处理i时,考虑已分配畜栏中,结束时间最早的畜栏x。如何处理详情见代码
露要用优先队列存放已经分配的畜栏,并使得结束时间最早的畜栏始丝列头部
AC代码:
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#define mod 1000000007
#define eps 1e-6
#define ll long long
#define INF 0x3f3f3f3f
#define ME0(x) memset(x,0,sizeof(x))
using namespace std;
struct cow//奶牛
{
int s,e;//挤奶时间的开始与结束
int no;//奶牛编号
//以挤奶时间小的规则排序
bool operator < (const cow & c) const
{
return s<c.s;
}
};
cow cows[];
int pos[];//记录每头牛在哪个畜栏
struct stall//畜栏
{
int over;//畜栏使用结束时间
int No;//畜栏编号
//以畜栏使用结束时间小的规则排序
bool operator<(const stall & c) const
{
return over>c.over;//优先队列排序相反
}
stall(int over,int No):over(over),No(No){}
};
priority_queue<stall> q;//优先队列
int main()
{
int N;
int total=;//总的畜栏数
cin>>N;
for(int i=; i<N; ++i)
{
cin>>cows[i].s>>cows[i].e;
cows[i].no=i;
}
sort(cows,cows+N);
// for(int i=0; i<N; i++)
// cout<<cows[i].s<<cows[i].e<<endl;
for(int i=; i<N; ++i)
{
if(q.empty())//没有畜栏的情况
{
++total;
q.push(stall(cows[i].e,total));
pos[cows[i].no]=total;
}
else
{
stall st=q.top();
if(st.over<cows[i].s)//有畜栏且畜栏结束使用时间小于奶牛开始挤奶的时间
{
q.pop();
q.push(stall(cows[i].e,st.No));
pos[cows[i].no]=st.No;
}
else//有畜栏且畜栏结束使用时间大于/等于奶牛开始挤奶的时间
{
++total;//新增一个畜栏
q.push(stall(cows[i].e,total));
pos[cows[i].no]=total;
}
}
}
cout<<total<<endl;
for(int i=; i<N; ++i)
cout<<pos[i]<<endl;
}
【POJ - 3190 】Stall Reservations(贪心+优先队列)的更多相关文章
- poj 3190 Stall Reservations 贪心 + 优先队列
题意:给定N头奶牛,每头牛有固定的时间[a,b]让农夫去挤牛奶,农夫也只能在对应区间对指定奶牛进行挤奶, 求最少要多少个奶牛棚,使得在每个棚内的奶牛的挤奶时间不冲突. 思路:1.第一个想法就是贪心,对 ...
- POJ 3190 Stall Reservations贪心
POJ 3190 Stall Reservations贪心 Description Oh those picky N (1 <= N <= 50,000) cows! They are s ...
- POJ - 3190 Stall Reservations 贪心+自定义优先级的优先队列(求含不重叠子序列的多个序列最小值问题)
Stall Reservations Oh those picky N (1 <= N <= 50,000) cows! They are so picky that each one w ...
- POJ 3190 Stall Reservations (优先队列)C++
Stall Reservations Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7646 Accepted: 271 ...
- poj 3190 Stall Reservations
http://poj.org/problem?id=3190 Stall Reservations Time Limit: 1000MS Memory Limit: 65536K Total Su ...
- POJ 3190 Stall Reservations【贪心】
POJ 3190 题意: 一些奶牛要在指定的时间内挤牛奶,而一个机器只能同时对一个奶牛工作.给你每头奶牛的指定时间的区间(闭区间),问你最小需要多少机器.思路:先按奶牛要求的时间起始点进行从小到大排序 ...
- POJ -3190 Stall Reservations (贪心+优先队列)
http://poj.org/problem?id=3190 有n头挑剔的奶牛,只会在一个精确时间挤奶,而一头奶牛需要占用一个畜栏,并且不会和其他奶牛分享,每头奶牛都会有一个开始时间和结束时间,问至少 ...
- POJ 3190 Stall Reservations 【贪心 优先队列】
题意:给出n头牛必须单独占用一台机器的时间段,问至少需要多少台机器 先按照每头牛的时间的x来排序,然后用一个优先队列(优先选取最小的)维护已经喂好的牛的最小的结束时间 比如现在优先队列里面有m头牛已经 ...
- poj3190 Stall Reservations (贪心+优先队列)
Cleaning Shifts Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) To ...
- [USACO06FEB] Stall Reservations 贪心
[USACO06FEB] Stall Reservations 贪心 \(n\)头牛,每头牛占用时间区间\([l_i,r_i]\),一个牛棚每个时间点只能被一头牛占用,问最少新建多少个牛棚,并且每头牛 ...
随机推荐
- [UnityUI]一些有趣的UI样例
1.环形进度条 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...
- HTML5已定稿:将彻底颠覆原生应用
2007年W3C(万维网联盟)立项HTML5,直至2014年10月底.这个长达八年的规范最终正式封稿. 过去这些年.HTML5颠覆了PC互联网的格局,优化了移动互联网的体验,接下来.HTML5将颠覆原 ...
- 使用Poi对EXCLE的导入导出
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import ...
- 几个简单的程序看PHP的垃圾回收机制
每一种计算机语言都有自己的自动垃圾回收机制,让程序员不必过分关心程序内存分配,php也不例外,但是在面向对象编程(OOP)编程中,有些对象需要显式的销毁,防止程序执行内存溢出. 一.PHP 垃圾回收机 ...
- DICOM-RT:放疗流程与參与角色
背景: 放疗是一个复杂的过程,同一时候须要肿瘤医师.模拟定位技师.剂量师.物理师.治疗技师.护士等多重角色參与.总体流程涉及到成像系统.定位系统.计划系统.治疗系统.质控QA系统.信息管理系统等多个独 ...
- java:[1,0] illegal character: \65279 问题
部署项目的时候报下面错误 [java] view plaincopyprint? java:[1,0] illegal character: \65279 java:[1,10] class, int ...
- PyOpenGL下GlutBitmapCharacter的替代
虽然pyinstaller支持pyopengl,但是调用GLUT之后,在其它电脑上面运行就会出现错误,索性按照之前C#上面的办法,把字体数据和函数用python重写 fontData.py #! /u ...
- Apache Qpid Broker的安全机制
一. Apache Qpid的安全机制简介 Apache Qpid提供多种安全机制,包括用户认证.规则定制的授权.消息加密和数字签名等.Apache Qpid使用SASL框架实现对用户身份的认 ...
- python的对象的属性(即对象的成员)是动态的
1 python的对象的成员叫attribute 2 python的类的成员是可以动态创建的 因此,在用的时候也提供了三个内建的接口来对类的成员进行操作 2.1 getattr() 2.2 hasat ...
- firefox 45 版本
在做项目的时候,发现45版本的firefox浏览器.声明函数要放在调用者的上方.而firefox的47,48版本则没有这种情况发生.