Stall Reservations POJ - 3190(贪心+优先队列)
题
这里有N只 (1 <= N <= 50,000) 挑剔的奶牛! 他们如此挑剔以致于必须在[A,B ]的时间内产奶(1 <= A <= B <= 1,000,000)当然, FJ必须为他们创造一个决定挤奶时间的系统.当然,没有牛想与其他奶牛分享这一时光
帮助FJ做以下事:
使每只牛都有专属时间的最小牛棚数
每只牛在哪个牛棚
也许有很多可行解。输出一种即可,采用SPJ
Input
第一行一个数字 N
第 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
代码
#include "stdio.h"
#include "algorithm"
#include "iostream"
#include "queue"
using namespace std;
struct ppp
{int a,b,k;bool operator<(const ppp &q)const{return b>q.b;
//优先队列排序相反(与sort不同,在sort中>为从大到小,而在优先队列中是从小到大,<同理)}
} p[50009],t;
bool paixu(ppp x,ppp y)
{if(x.a!=y.a)return x.a<y.a;return x.b<y.b;
}
int c[50009];
priority_queue<ppp>q;
int main()
{int n,l=1;scanf("%d",&n);for(int i=1; i<=n; i++){cin>>p[i].a>>p[i].b;p[i].k=i;}sort(p+1,p+n+1,paixu);c[p[1].k]=1;//运用的很巧妙 q.push(p[1]);for(int i=2; i<=n; i++){t=q.top();if(p[i].a>t.b){q.pop();q.push(p[i]);c[p[i].k]=c[t.k];}else{q.push(p[i]);c[p[i].k]=++l;}}cout<<l<<endl;for(int i=1; i<=n; i++)cout<<c[i]<<endl;
}
Stall Reservations POJ - 3190(贪心+优先队列)相关推荐
- Stall Reservations POJ
原题链接 经典贪心题目. 思路:开结构体cow.stall分别表示牛.畜栏,其中,每个cow都有编号.开始挤奶.结束挤奶时间,每个stall都有编号.当前在该畜栏中挤奶的牛的挤奶结束时间. struc ...
- 【贪心】Stall Reservations(luogu 2859/poj 3190)
Stall Reservations luogu 2859 poj 3190 题目大意: 有n头牛,每头牛都有自己的挤奶时间,挤奶时间内每头牛用一个奶棚,现在问最少需要多少个奶棚 输入样例 5 1 1 ...
- poj 1862 Stripies/优先队列
原题链接:http://poj.org/problem?id=1862 简单题,贪心+优先队列主要练习一下stl大根堆 写了几种实现方式写成类的形式还是要慢一些... 手打的heap: 1: 1 #i ...
- Stall Reservations
题目:Stall Reservations 总结:这道题按照时间的开始的从小到大排序,如果开始时间相同,那么就按照结束时间从小到大,用n2的时间复杂度,只要有后面的开始时间大于前面的结束时间,那么就是 ...
- HDU 6438 网络赛 Buy and Resell(贪心 + 优先队列)题解
思路:维护一个递增队列,如果当天的w比队首大,那么我们给收益增加 w - q.top(),这里的意思可以理解为w对总收益的贡献而不是真正获利的具体数额,这样我们就能求出最大收益.注意一下,如果w对收益 ...
- 1163 最高的奖励(贪心+优先队列)
有N个任务,每个任务有一个最晚结束时间以及一个对应的奖励.在结束时间之前完成该任务,就可以获得对应的奖励.完成每一个任务所需的时间都是1个单位时间.有时候完成所有任务是不可能的,因为时间上可能会有冲突 ...
- 贪心+优先队列 HDOJ 5360 Hiking
题目传送门 1 /* 2 题意:求邀请顺序使得去爬山的人最多,每个人有去的条件 3 贪心+优先队列:首先按照l和r从小到大排序,每一次将当前人数相同的被邀请者入队,那么只要能当前人数比最多人数条件小, ...
- 51nod 1428 bzoj 1651: [Usaco2006 Feb]Stall Reservations 专用牛棚
1651: [Usaco2006 Feb]Stall Reservations 专用牛棚 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 951 So ...
- 贪心(优先队列) - New Year Snowmen - CodeForces - 140C
贪心(优先队列) - New Year Snowmen - CodeForces - 140C 题意: 给定一个长度为n的正整数序列a1,a2,...,an.给定一个长度为n的正整数序列a_1,a_2 ...
最新文章
- 67. Leetcode 450. 删除二叉搜索树中的节点 (二叉搜索树-基本操作类)
- Leetcode 分类 题解 收集
- Java+MyEclipse+Tomcat (五)DAO和Java Bean实现数据库和界面分开操作
- 【EL表达式】EL 表达式学习
- 【LeetCode】整数反转
- 4. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识wrk、wrk2
- Android使用jxl快速生成Excel表
- python len命令_python命令行参数
- 详解Python中的浅复制与深复制
- [活动]《博客园精华集》设计模式分册第2轮筛选结果公示
- android 安卓editext默认弹出英文输入法,只能输入英文与数字
- 隐藏 element-ui上传照片显示的加号盒子
- 华为认证考试方式有哪些?华为认证考试怎么考?
- c c python的区别_python版本的区别 Cpython Jython pypy ?
- 论文阅读:SPR:Supervised Personalized Ranking Based on Prior Knowledge for Recommendation
- 大数据——DBT:dbt集成数据质量监控插件elementary(生产环境篇)
- SpringBoot 整合Smart-doc生成接口文档
- OSError: [WinError 87]参数错误
- 第13周项目1—动物这样叫2.3
- 40 张图带你搞懂 TCP 和 UDP,android软件开发教程