
YbtOJ 贪心算法课堂过关 例3 畜栏预定【贪心】
发布日期:2021-05-07 13:09:42
浏览次数:18
分类:技术文章
本文共 793 字,大约阅读时间需要 2 分钟。
思路
这道题容易想到用贪心做。
首先肯定要排序, 之后会发现当一个奶牛的左区间边界大于另一个奶牛的右区间边界就可以共用一个畜栏。 这样暴力做是 O ( n 2 ) O(n^2) O(n2),发现可以用小根堆来维护右区间边界。 则时间复杂度可以优化成 O ( n log n ) O(n\log n) O(nlogn)。C o d e Code Code
#include#include #include #include #include using namespace std;int anss[100010],js;int n,ans,c;priority_queue q;struct node{ int a,b[2];}fi[1000010];bool cmp(const node&f,const node&c){ return f.a >n; for(int i=1; i<=n; i++) scanf("%d%d",&fi[i].a,&fi[i].b[0]); sort(fi+1,fi+1+n,cmp); for(int i=1; i<=n; i++) { fi[fi[i].b[0]].b[1]=i; //存储位置,以便输出共用畜栏时的序号 q.push(-fi[i].b[0]); if(fi[i].a<=-q.top()) //一个奶牛的左区间边界不大于另一个奶牛的右区间边界 ans++,c++,anss[++js]=c; else //一个奶牛的左区间边界大于另一个奶牛的右区间边界 { anss[++js]=fi[-q.top()].b[1]; q.pop(); } } cout< <
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月13日 01时53分08秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
暴打算法:王者级数据结构与LeetCode笔记,一路绿灯杀进字节Java岗
2019-03-04
限时开源!公布半小时下载量达10W:阿里大牛出品「MyCat笔记」
2019-03-04
阿里Java全线成长宝典,从P5到P8一应俱全
2019-03-04
JAVA初窥-DAY07
2019-03-04
数组--Go语言学习笔记
2019-03-04
Redis (三)——Linux 上安装 Redis
2019-03-04
c编程常见错误-函数声明没有参数类型声明
2019-03-04
概率论 贝叶斯公式
2019-03-04
java 重写(override)和重载(overload)区别
2019-03-04
java 多态
2019-03-04
java 多态类型转换
2019-03-04
java ==和equals
2019-03-04
java 接口(Interface)多态特性
2019-03-04
搜集整理随机产生人的姓名的2种方法
2019-03-04
最简单的Socket程序[入门篇]
2019-03-04
VS2005图标默认存放位置
2019-03-04
常用正则表达式
2019-03-04
C#中换行的代码
2019-03-04
用正则表达式过滤多余空格
2019-03-04
XML:采用XHTML和CSS设计可重用可换肤的WEB站点
2019-03-04