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

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

我一开始想用线段树,但是发现还要记录每头cow所在的棚......

无奈之下选择正解:贪心。

用priority_queue来维护所有牛棚中结束时间最早的那个牛棚,即可得出答案。

注意代码实现的细节。

1 #include 
2 #include
3 #include
4 using namespace std; 5 const int N = 50010; 6 struct Cow { 7 int a, b, num; 8 bool operator < (const Cow& x) const { 9 return this->a < x.a;10 }11 bool operator > (const Cow& x) const {12 return this->a > x.a;13 }14 }c[N];15 priority_queue< Cow, vector
, greater
>Q;16 int ans[N];17 int main() {18 int n, top = 0;19 scanf("%d", &n);20 for(int i = 1; i <= n; i++) {21 scanf("%d%d", &c[i].a, &c[i].b);22 c[i].num = i;23 }24 sort(c + 1, c + n + 1);25 Cow x;26 x.a = c[1].b;27 x.b = ++top;28 ans[c[1].num] = top;29 Q.push(x);30 for(int i = 2; i <= n; i++) {31 //printf("i:%d c[i].b:%d Q.top().a:%d\n", c[i].num, c[i].b, Q.top().a);32 if(Q.top().a < c[i].a) {33 x = Q.top();34 Q.pop();35 x.a = c[i].b;36 ans[c[i].num] = x.b;37 Q.push(x);38 }39 else {40 x.a = c[i].b;41 x.b = ++top;42 ans[c[i].num] = top;43 Q.push(x);44 }45 }46 printf("%d\n", top);47 for(int i = 1; i <= n; i++) {48 printf("%d\n", ans[i]);49 }50 return 0;51 }
AC代码

 

转载于:https://www.cnblogs.com/huyufeifei/p/9013734.html

你可能感兴趣的文章
CentOS 6.6 FTP install
查看>>
C#------判断btye[]是否为空
查看>>
图解Ajax工作原理
查看>>
oracle导入导出小记
查看>>
聊一聊log4j2配置文件log4j2.xml
查看>>
NeHe OpenGL教程 第七课:光照和键盘
查看>>
修改上一篇文章的node.js代码,支持默认页及支持中文
查看>>
Php实现版本比较接口
查看>>
删除设备和驱动器中软件图标
查看>>
第四章 TCP粘包/拆包问题的解决之道---4.1---
查看>>
html语言
查看>>
从源码看集合ArrayList
查看>>
spring-boot支持websocket
查看>>
菜鸟笔记(一) - Java常见的乱码问题
查看>>
我理想中的前端工作流
查看>>
记一次Git异常操作:将多个repository合并到同一repository的同一分支
查看>>
CodeIgniter 3.0 新手捣鼓源码(一) base_url()
查看>>
Chrome 广告屏蔽功能不影响浏览器性能
查看>>
vSphere 6将于2月2日全球同步发表
查看>>
Android状态栏实现沉浸式模式
查看>>