题意:这里有N只 (1 <= N <= 50,000) 挑剔的奶牛! 他们如此挑剔以致于必须在[A,B]的时间内产奶(1 <= A <= B <= 1,000,000)当然, FJ必须为他们创造一个决定挤奶时间的系统.当然,没有牛想与其他奶牛分享这一时光

帮助FJ做以下事:

  • 使每只牛都有专属时间的最小牛棚数
  • 每只牛在哪个牛棚

也许有很多可行解。输出一种即可

注意: [1, 2],[2, 3]算作重叠

题解:本题的贪心策略就是先按照起始时间排序(基操),然后在放入下一头牛的时候,如果这一头牛的开始时间比刚刚所有牛棚中的结束时间的最小值大,那就将此牛放入此棚,且将棚中的最小值更新;如果这一头牛的开始时间比刚刚所有牛棚中的结束时间的最小值要小,那只能开一个新的棚。

坑点:答案是按照牛的序号输出的,所以序号这个信息不要在存结构体的途中丢失。


#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<math.h>
#include<queue>
using namespace std; struct Cow {
int s, e, id;
}cow[];
struct cow_home {
int finish;
int home_id;
cow_home() {}
cow_home(int finish, int home_id) :finish(finish), home_id(home_id) {}
bool operator < (const cow_home& a)const
{
return finish > a.finish;
}
};
bool cmp(Cow a, Cow b) {
if (a.s == b.s)return a.e > b.e;
return a.s < b.s;
}
int result_home[];
int main(void)
{
ios::sync_with_stdio(false);
int N;
cin >> N;
for (int i = ; i <= N; i++)
{
cin >> cow[i].s >> cow[i].e;
cow[i].id = i;
}
sort(cow + , cow + + N, cmp);
int num_home = ;
priority_queue<cow_home>q;
q.push(cow_home(cow[].e, ));
result_home[cow[].id] = ;
for (int i = ; i <= N; i++)
{
cow_home now;
now = q.top();
if (cow[i].s > now.finish)//不能取等,题目要求不能重叠
{
q.pop();
result_home[cow[i].id] = now.home_id;
q.push(cow_home(cow[i].e, now.home_id));
}
else
{
num_home++;
result_home[cow[i].id] = num_home;
q.push(cow_home(cow[i].e, num_home));
}
}
cout << num_home << endl;
for (int i = ; i <= N; i++)
cout << result_home[i] << endl;
return ;
}

最新文章

  1. svn 更新命令(冲突时使用theirs)
  2. Power of Two
  3. QT5中全屏显示子窗口和取消全屏的方法
  4. tcp/ip分片
  5. linux内核值shmmax问题
  6. JavaScript 继承方式详解
  7. ElasticSearch小操之Marvel,Sense
  8. swap chain- IDirect3DSwapChain9
  9. 【Xamarin挖墙脚系列:在VMware11中安装Mac10.11 EI Captain后的vmware tools】
  10. LogCook 一个简单实用的Android日志管理工具
  11. C# ASP.NET 转换为int型的方法 很实用
  12. Django的生命周期图解
  13. 安装Leanote极客范的云笔记
  14. 第一个Angular2的样例
  15. 工厂模式讲解, 引入Spring IOC
  16. MongoDB的数据备份与恢复
  17. 关闭shift中英文切换 英文代码/中文注释随意切换着写。
  18. SpringCloud之Fegin
  19. 获取本地IP地址的vc代码
  20. coursera课程Text Retrieval and Search Engines之Week 4 Overview

热门文章

  1. jstat监控JVM内存使用、GC回收情况
  2. PHP文件包含 整理
  3. Spring新注解
  4. 一文梳理JavaScript 事件循环(Event Loop)
  5. 人脸识别和手势识别应用(face++)开发
  6. selenium(5)-解读强制等待,隐式等待,显式等待的区别
  7. Thunk函数的使用
  8. 在运行时生成C# .NET类
  9. java8 Optional 类
  10. 发布Nuget包时遇到都意外