这里有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(贪心+优先队列)相关推荐

  1. Stall Reservations POJ

    原题链接 经典贪心题目. 思路:开结构体cow.stall分别表示牛.畜栏,其中,每个cow都有编号.开始挤奶.结束挤奶时间,每个stall都有编号.当前在该畜栏中挤奶的牛的挤奶结束时间. struc ...

  2. 【贪心】Stall Reservations(luogu 2859/poj 3190)

    Stall Reservations luogu 2859 poj 3190 题目大意: 有n头牛,每头牛都有自己的挤奶时间,挤奶时间内每头牛用一个奶棚,现在问最少需要多少个奶棚 输入样例 5 1 1 ...

  3. poj 1862 Stripies/优先队列

    原题链接:http://poj.org/problem?id=1862 简单题,贪心+优先队列主要练习一下stl大根堆 写了几种实现方式写成类的形式还是要慢一些... 手打的heap: 1: 1 #i ...

  4. Stall Reservations

    题目:Stall Reservations 总结:这道题按照时间的开始的从小到大排序,如果开始时间相同,那么就按照结束时间从小到大,用n2的时间复杂度,只要有后面的开始时间大于前面的结束时间,那么就是 ...

  5. HDU 6438 网络赛 Buy and Resell(贪心 + 优先队列)题解

    思路:维护一个递增队列,如果当天的w比队首大,那么我们给收益增加 w - q.top(),这里的意思可以理解为w对总收益的贡献而不是真正获利的具体数额,这样我们就能求出最大收益.注意一下,如果w对收益 ...

  6. 1163 最高的奖励(贪心+优先队列)

    有N个任务,每个任务有一个最晚结束时间以及一个对应的奖励.在结束时间之前完成该任务,就可以获得对应的奖励.完成每一个任务所需的时间都是1个单位时间.有时候完成所有任务是不可能的,因为时间上可能会有冲突 ...

  7. 贪心+优先队列 HDOJ 5360 Hiking

    题目传送门 1 /* 2 题意:求邀请顺序使得去爬山的人最多,每个人有去的条件 3 贪心+优先队列:首先按照l和r从小到大排序,每一次将当前人数相同的被邀请者入队,那么只要能当前人数比最多人数条件小, ...

  8. 51nod 1428 bzoj 1651: [Usaco2006 Feb]Stall Reservations 专用牛棚

    1651: [Usaco2006 Feb]Stall Reservations 专用牛棚 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 951  So ...

  9. 贪心(优先队列) - New Year Snowmen - CodeForces - 140C

    贪心(优先队列) - New Year Snowmen - CodeForces - 140C 题意: 给定一个长度为n的正整数序列a1,a2,...,an.给定一个长度为n的正整数序列a_1,a_2 ...

最新文章

  1. 67. Leetcode 450. 删除二叉搜索树中的节点 (二叉搜索树-基本操作类)
  2. Leetcode 分类 题解 收集
  3. Java+MyEclipse+Tomcat (五)DAO和Java Bean实现数据库和界面分开操作
  4. 【EL表达式】EL 表达式学习
  5. 【LeetCode】整数反转
  6. 4. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识wrk、wrk2
  7. Android使用jxl快速生成Excel表
  8. python len命令_python命令行参数
  9. 详解Python中的浅复制与深复制
  10. [活动]《博客园精华集》设计模式分册第2轮筛选结果公示
  11. android 安卓editext默认弹出英文输入法,只能输入英文与数字
  12. 隐藏 element-ui上传照片显示的加号盒子
  13. 华为认证考试方式有哪些?华为认证考试怎么考?
  14. c c python的区别_python版本的区别 Cpython Jython pypy ?
  15. 论文阅读:SPR:Supervised Personalized Ranking Based on Prior Knowledge for Recommendation
  16. 大数据——DBT:dbt集成数据质量监控插件elementary(生产环境篇)
  17. SpringBoot 整合Smart-doc生成接口文档
  18. OSError: [WinError 87]参数错误
  19. 第13周项目1—动物这样叫2.3
  20. 40 张图带你搞懂 TCP 和 UDP,android软件开发教程

热门文章

  1. 名空间 (Namespaces)
  2. STM32G070RBT6基于STM32CubeMX创建串口中断接收数据
  3. MQL5教程1 基础数据类型
  4. 一般人自学软件测试,我劝你回头是岸~
  5. 我与SM不得不说的故事(一)
  6. zxmh.net 的漫画下载
  7. 转贴两篇文章 《绩效主义毁了索尼》和《绩效考评的另一面》
  8. 人的本能和本性在游戏里表现无疑
  9. android 动画方式,Android Activity进出动画三种方法
  10. 从小白到大神的起步(一起加油!!)