博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BZOJ】1572: [Usaco2009 Open]工作安排Job
阅读量:6311 次
发布时间:2019-06-22

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

【题意】给定n项工作的截止时间和价值,每项工作需要1单位时间完成,求最大价值。n<=10^5。

【算法】贪心+堆

【题解】

如果是访问到x时将d[x]前的点从价值最大的能加就加是错误的贪心,因为后面的点会占用到前面的,不能保证已选的就是最优的。

正确的贪心:按顺序选择前面所有点,并把价值取负后加入堆表示“反悔值”,然后遇到超限就弹出反悔值最小的(价值也就最小)。

还有一种思路是反过来做:从后往前算“开始时间”,每秒选择一个算入答案。

”反悔“是贪心思想的重要用法之一!

#include
#include
#include
using namespace std;const int maxn=100010;struct cyc{ int d,p;}a[maxn];priority_queue
q;bool cmp(cyc a,cyc b){
return a.d
a[i].d){now--;ans+=q.top();q.pop();} } printf("%lld",ans); return 0;}
View Code

 

转载于:https://www.cnblogs.com/onioncyc/p/7449981.html

你可能感兴趣的文章
buildroot下查找外部编译器通过ext-toolchain-wrapper调用的参数
查看>>
MySQL Replication 主主配置详细说明
查看>>
Linux的任务调度
查看>>
在Android studio中添加jar包方法如下
查看>>
iframe 在ie下面总是弹出新窗口解决方法
查看>>
分享10款漂亮实用的CSS3按钮
查看>>
安装nginx 常见错误及 解决方法
查看>>
Gorun8电子商城
查看>>
在之前链表的基础上改良的链表
查看>>
android编译系统makefile(Android.mk)写法
查看>>
MD5源代码C++
查看>>
Eclipse 添加 Ibator
查看>>
Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
查看>>
Python编程语言
查看>>
十四、转到 linux
查看>>
Got error 241 'Invalid schema
查看>>
ReferenceError: event is not defined
查看>>
男人要内在美,更要外在美
查看>>
为什么要跟别人比?
查看>>
app启动白屏
查看>>