博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj3190
阅读量:6498 次
发布时间:2019-06-24

本文共 1100 字,大约阅读时间需要 3 分钟。

一、题意:有n头牛,每头牛需要占用一个时间段的时间来挤奶,且必须有机器。问最少需要多少个机器

二、思路:区间贪心。把尽量多的牛放在一个棚子里,这样就可以使得用到的棚子数最少。只要任意两头牛的挤奶时间不重合,就可以放在一个棚子里。因为N值比较大,先标记好每一头牛的起始坐标,然后按起始时间从小到大进行排序,然后依次从前往后去遍历每一头牛。这里需要用一个优先队列来维护,以结束时间从小到大来维护,每次将一头牛与队列首的牛进行比较,如果满足它的起始时间大于队列首的那头牛的结束时间,这两头牛就可以使用同一个机器,否则就新加一个机器。这里需要注意牛的入队和出队

三、代码

#include"iostream"#include"stdio.h"#include"queue"#include"algorithm"using namespace std;const int MAXN=50005;struct Node{    int s,e,pos;    friend bool operator<(Node a,Node b)    {        if(a.e==b.e) return a.s
b.e; }};bool Cmp(Node a,Node b){ if(a.s!=b.s) return a.s
que;int order[MAXN];int main(){ int n; while(scanf("%d",&n)==1) { for(int i=0;i
que.top().e) { order[cows[i].pos]=order[que.top().pos]; que.pop(); que.push(cows[i]); } else { que.push(cows[i]); order[cows[i].pos]=que.size(); } } cout<
<

  

转载于:https://www.cnblogs.com/acm-jing/p/9795226.html

你可能感兴趣的文章
怎么看电脑有没有安装USB3.0驱动
查看>>
overflow清除浮动的原理
查看>>
Spring Boot 使用parent方式引用时 获取值属性方式默认@
查看>>
解决maven下载jar慢的问题(如何更换Maven下载源)
查看>>
linux安装gitLab
查看>>
concurrent包的实现示意图
查看>>
golang os.Args
查看>>
Linux常用命令
查看>>
Java WEB开发时struts标签 显示set内容
查看>>
spring-data-elasticsearch 概述及入门(二)
查看>>
Solr启动和结束命令
查看>>
1.12 xshell密钥认证
查看>>
3.2 用户组管理
查看>>
awk
查看>>
VMware虚拟机出现“需要整合虚拟机磁盘”的解决方法
查看>>
ibatis 动态查询
查看>>
汇编语言之实验一
查看>>
git 调用 Beyond Compare
查看>>
SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)[转]
查看>>
android实现图片识别的几种方法
查看>>