原题链接

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

struct cow {int st, ed; // 牛开始、结束挤奶的时间int cno; // 牛的编号cow () {}cow (int s, int e) : st(s), ed(e) {}bool operator < (const cow &b) const {if (st != b.st) return st < b.st;else return ed < b.ed;}
} niu[50010];struct stall {int sno; // 畜栏的编号int sed; // 该畜栏结束挤奶时间stall () {}stall (int _sno, int _sed) : sno(_sno), sed(_sed) {}bool operator < (const stall &b) const {return sed > b.sed;}
};

并且,要将牛按照挤奶开始时间从小到大排序,如果开始挤奶时间相同,则按照挤奶结束时间从小到大排序。
在stall中,重载运算符,为了使用优先队列,立即得到当前所有畜栏中,最早结束挤奶的畜栏编号。
比如说,当前有畜栏1,2,3,共三个,每个畜栏结束挤奶的时间分别是100,200,300。当前又有一只牛,要在90时刻挤奶,则它不能去这三个任何一个,因为,这三个畜栏在90时刻都有牛在挤奶。只能另开畜栏。
AC代码:

#include <iostream>
#include <algorithm>
#include <queue>
#include <cstdio>
using namespace std;int n;
int pos[50010]; // 每头牛去往的畜栏编号struct cow {int st, ed; // 牛开始、结束挤奶的时间int cno; // 牛的编号cow () {}cow (int s, int e) : st(s), ed(e) {}bool operator < (const cow &b) const {if (st != b.st) return st < b.st;else return ed < b.ed;}
} niu[50010];struct stall {int sno; // 畜栏的编号int sed; // 该畜栏结束挤奶时间stall () {}stall (int _sno, int _sed) : sno(_sno), sed(_sed) {}bool operator < (const stall &b) const {return sed > b.sed;}
};int main()
{scanf("%d", &n);for (int i = 1;i <= n;i++) {scanf("%d %d",&niu[i].st, &niu[i].ed);niu[i].cno = i;}sort(niu+1,niu+n+1);int cnt = 1;priority_queue<stall> q;pos[niu[1].cno] = cnt;  // 第一个牛去往1号畜栏q.push(stall(1,niu[1].ed)); // 将1号畜栏入队for (int i = 2;i <= n;i++) { // 依次处理之后的牛int st = niu[i].st; // 该牛挤奶时间int ed = niu[i].ed; // 该牛挤奶结束时间// 如果当前最早结束挤奶的畜栏的结束时间小于该牛开始挤奶时间,该牛去往该畜栏if (q.top().sed < st) {  // 不可以是 <= stall cur = q.top();q.pop();pos[niu[i].cno] = cur.sno;cur.sed = ed;q.push(cur);} else { // 当前牛的开始挤奶时间,比任何畜栏的结束时间都早或者等于最早结束挤奶的畜栏的挤奶时间,只能再开一个畜栏cnt++;pos[niu[i].cno] = cnt;q.push(stall(cnt,ed));}}printf("%d\n",cnt);for (int i = 1;i <= n;i++) {printf("%d\n",pos[i]);}return 0;
}

Stall Reservations POJ相关推荐

  1. Stall Reservations POJ - 3190(贪心+优先队列)

    题 这里有N只 (1 <= N <= 50,000) 挑剔的奶牛! 他们如此挑剔以致于必须在[A,B ]的时间内产奶(1 <= A <= B <= 1,000,000)当 ...

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

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

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

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

  4. Stall Reservations

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

  5. BZOJ 1651: [Usaco2006 Feb]Stall Reservations 专用牛棚

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

  6. 挑战程序设计竞赛 POJ Stall Reservations

    题目 没想到用优先队列,我最开始的思路是对每个区间的结束时间排序,优先处理结束早的区间,但题目下面已经提示了,优先处理开始时间早的,对已经在stall里奶牛优先处理结束时间早的. #include & ...

  7. POJ 3190 Stall Reservations(贪心算法)

    有 n头牛(1<=n<=50,000)要挤奶.给定每头牛挤奶的时间区 间[A,B] (1<=A<=B<=1,000,000,A,B为整数). 牛需要呆畜栏里才能挤奶.一个 ...

  8. POJ - 3190 Stall Reservations(贪心+优先队列优化)

    题目链接:点击查看 题目大意:有n头牛在畜栏中吃草,每个畜栏在同一时间段只能提供给一头牛吃草,所以可能会需要多个畜栏,给定N头牛和每头牛开始吃草和结束吃草的时间,每头牛在给定时间段内会一直吃草,求需要 ...

  9. POJ 3190: Stall Reservations

    思路: 1.读入数据,将奶牛的相关数据存在数组中,按开始时间从前到后排列 2.定义最小堆(位于根上的奶牛的结束时间最早)(用于找到已经使用结束的牛棚.若用数组存储每个牛棚的使用结束时间,再找结束时间最 ...

最新文章

  1. shell脚本——调试(-n / -x /-c)
  2. 聚类算法KMeans和KMedoid 的Matlab实现
  3. Python-Django-Ajax进阶
  4. 用python批量下载网络图片大全_实战干货:用 Python 批量下载百度图片!
  5. 软件项目开发 学校自行开发_自行开发游戏
  6. c语言如何删除数组中的某一个元素_数据结构之线性表高效删除重复元素
  7. 使用Eclipse进行远程调试 外加 ant 直接打包到服务器
  8. 5.11socket选项
  9. eclipse输入中文乱码,问题已解决
  10. Google发布全球首个72量子比特处理器Bristlecone预览
  11. python命令行tab实例小妙招
  12. Linux学习笔记(4)
  13. C++的对象,变量初始化
  14. TXT阅读神器 分分钟打造一本电子书
  15. 【英文论文写作经验分享】1、Abstract 怎么写?
  16. 快速学习四步法:如何用20小时,快速学习
  17. 天才少女谷爱凌夺金!母亲毕业于北大,父亲毕业于哈佛,她将入读斯坦福…...
  18. python怎么更新sp2_GitHub - Sp2-Hybrid/Python-100-Days: Python - 100天从新手到大师
  19. 区块链未来前景及运用领域
  20. 作品集十(平面设计)

热门文章

  1. Linux中的log介绍(一)---概述
  2. 三百个好用的免费软件名单
  3. 理解变分自编码器,GAN的近亲
  4. S3/S4/S5 Long Run Test
  5. 2021年11月最新搜狗验证码识别,6位全对正确率高达96%
  6. 166.人工智能眼睛特效
  7. 04.卷积神经初探(5-3 特征工程)
  8. 进入数据标注组后我干了什么
  9. 感受大自然帶給我們的愉悅心情
  10. 人工智能 | ShowMeAI资讯日报 #2022.06.29