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

#include <iostream>
#include <cstdio>
#include <cmath>
#include <iomanip>
#include <queue>
#include <map>
#include <cstring>
#include <algorithm>
using namespace std;struct Interval{int ID;int begin;int end;
};
typedef long long ll;
int N;
Interval cow[50001];
priority_queue<Interval> que; bool operator < (const Interval& a, const Interval& b)//优先队列的排序规则
{return a.end > b.end;
}
bool Cmp(Interval a, Interval b)
{if (a.begin != b.begin) {return a.begin < b.begin;}return a.end < b.end;}
int main()
{ios::sync_with_stdio(false);cin.tie(0);cin >> N;for (int i = 0; i < N; i++) {cin >> cow[i].begin >> cow[i].end;cow[i].ID = i + 1;}sort(cow, cow + N, Cmp);//按开始时间从小到大排序int ans = 0, last = 1e9;Interval tmp;int stall[50001];//记录所有奶牛所在stall的编号,用map更方便for (int i = 0; i < N; i++) {if (cow[i].begin <= last) {//如果当前奶牛的开始时间不大于stall中奶牛的结束时间,要新开一个stallque.push(cow[i]);ans++;stall[cow[i].ID] = que.size();}else {//否则便在当前stall里替换上一只奶牛stall[cow[i].ID] = stall[tmp.ID];que.pop();que.push(cow[i]);}tmp = que.top();last = tmp.end;}cout << ans << endl;for (int i = 1; i <= N; i++) {cout << stall[i] << endl;}return 0;
}

挑战程序设计竞赛 POJ Stall Reservations相关推荐

  1. 《挑战程序设计竞赛》--初级篇习题POJ部分【穷竭搜索+贪心】

    最近看了<挑战程序设计竞赛>初级篇,这里总结一下部分poj上的练习题,主要涉及方面为: 穷竭搜索 and 贪心算法 具体题目: 简单导航 一.穷竭搜索 二.贪心算法 一.穷竭搜索 穷竭搜索 ...

  2. POJ 1150 The Last Non-zero Digit 《挑战程序设计竞赛》

    为什么80%的码农都做不了架构师?>>>    POJ 1150 The Last Non-zero Digit超大组合数:求超大组合数P(n, m)的最后一个非零位.4.1更加复杂 ...

  3. POJ 3735 Training little cats​ 题解 《挑战程序设计竞赛》

    为什么80%的码农都做不了架构师?>>>    POJ 3735 Training little cats调教猫咪:有n只饥渴的猫咪,现有一组羞耻Play,由k个操作组成,全部选自: ...

  4. POJ 3608 Bridge Across Islands 《挑战程序设计竞赛》

    为什么80%的码农都做不了架构师?>>>    POJ 3608 Bridge Across Islands跨岛大桥:在两个凸包小岛之间造桥,求最小距离?3.6与平面和空间打交道的计 ...

  5. POJ 3713 Transferring Sylla​ 题解 《挑战程序设计竞赛》

    为什么80%的码农都做不了架构师?>>>    POJ 3713 Transferring Sylla三连通图:判断一个无向图是否三连通?3.5借助水流解决问题的网络流最大流刷个题报 ...

  6. 《挑战程序设计竞赛》--初级篇习题POJ部分【动态规划】

    关于基本的动态规划和经典的动态规划,在之前已经总结过了,可以温习一下: 传送门 这次是延续上次的<挑战程序设计竞赛>初级篇,总结部分poj上的练习题,主要是DP方面的练习题: 一.基础的动 ...

  7. 《挑战程序设计竞赛》--初级篇习题POJ部分【2.4 - 2.6】

    这次是延续上次的<挑战程序设计竞赛>初级篇,总结部分poj上的练习题,主要是2.4 ~ 2.6部分: 导航 2.4 加工并存储的数据结构 优先队列 Sunscreen MooUnivers ...

  8. POJ 1418 Viva Confetti 题解 《挑战程序设计竞赛》

    为什么80%的码农都做不了架构师?>>>    POJ 1418 Viva Confetti礼花:Confetti 是一些大小不一的彩色圆形纸片,人们在派对上.过节时便抛洒它们以示庆 ...

  9. 《挑战程序设计竞赛(第2版)》习题册攻略

    本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...

最新文章

  1. vuex刷新页面数据丢失怎么解决_vuex状态机浅谈
  2. 转: FFmpeg功能命令汇总
  3. 在迷失中前进--hatita22年蹉跎岁月的长嘘短叹(短叹篇)
  4. BZOJ 2434 最长公共子序列
  5. SBuild 0.1.4 发布,基于 Scala 的构建系统
  6. Linux socket编程(一) 对套接字操作的封装
  7. 浮动元素 —— 怎么使用它们、它们有什么问题以及怎么解决这些问题。
  8. python和java学哪个好-Python和Java学哪个好?大家是怎么选的
  9. Intergate flot with Angular js ——Angular 图形报表
  10. python实现A星算法(寻路)
  11. android ios 声音大小,嫌手机声音太小?打开这个,声音瞬间放大10倍!
  12. hausaufgabe--python 22- Recurse
  13. 什么是EPSG CODE
  14. 微信小程序中map地图中取消地点图标文字(干净地图)
  15. 学妹知道了这 19 条建议后,大学生活过得有滋有味
  16. Normalized Cut的C++代码 Linux Win
  17. OFD电子证照模版制作工具 --(采用wpf开发)
  18. angularjs中使用百度统计
  19. 2021-2022-1 20212808《Linux内核原理与分析》第一周作业
  20. 冒号 : 与双冒号 :: 的C++用法

热门文章

  1. 苹果设备模拟器 所有XCcode正式版本 下载方法
  2. 01219 oracle,oracle for win移机ORA-01219问题解决方法详解
  3. ESP-12S学习(7)--ESP8266TCP和UDP的客户端和服务端
  4. 基于 Agora SDK 实现 Web 端的多人视频互动
  5. 力扣算法题,第N个神奇数字(Python)
  6. AD20(Altium designer2020)怎么隐藏所有元器件的位号(名字)和属性?
  7. golang 小trick
  8. java jdk9.0.1和1.9_jdk1.5-jdk1.9的主要区别
  9. Shell基础(二)
  10. NLP和计算机视觉在AI教育的那些年,数据桎梏一直是难点