博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 1572 [Usaco2009 Open]工作安排Job:贪心 + 优先队列【先放再更新】
阅读量:5165 次
发布时间:2019-06-13

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

题目链接:

题意:

  有n个工作,每个工作有一个截止日期dead[i]和收益pay[i]。

  完成一项工作需要花费1的时间。

  问你最大收益。

 

题解:

  贪心。

  先将n个工作按dead从小到大排序。

  开一个优先队列q(升序),保存当前选了的工作的pay。

  枚举每个工作i:

    (1)如果当前q中的工作数 < pay[i],说明在pay[i]及之前的时间还有没用的。所以直接选这个工作。

    (2)如果当前q中的工作数 = pay[i],说明没有空闲时间了。所以如果q中最小的收益比pay[i]还小,则用当前工作替换掉。

  最后q中剩下的就是最终要选的工作。

 

AC Code:

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #define MAX_N 100005 7 8 using namespace std; 9 10 struct Work11 {12 long long dead;13 long long pay;14 Work(long long _dead,long long _pay)15 {16 dead=_dead;17 pay=_pay;18 }19 Work(){}20 friend bool operator < (const Work &a,const Work &b)21 {22 return a.dead
,greater
> q;30 31 void read()32 {33 cin>>n;34 for(int i=0;i
>work[i].dead>>work[i].pay;37 }38 }39 40 void solve()41 {42 sort(work,work+n);43 for(int i=0;i

 

转载于:https://www.cnblogs.com/Leohh/p/7623714.html

你可能感兴趣的文章
Python操作SQLite数据库的方法详解
查看>>
菜单和工具条(二)
查看>>
hadoop17---RPC和Socket的区别
查看>>
使用JMeter代理录制app测试脚本
查看>>
Linq to Object实现分页获取数据
查看>>
mac常用系统命令
查看>>
android上传文件到服务器
查看>>
我回答了90%的面试题,为什么还被拒?
查看>>
Html - Table 表头固定和 tbody 设置 height 在IE不起作用的解决
查看>>
HDU 2262 回溯算法 递归枚举
查看>>
九度0J 1374 所有员工年龄排序
查看>>
微信小程序图片使用示例
查看>>
Ubuntu16.04+cuda8.0rc+opencv3.1.0+caffe+Theano+torch7搭建教程
查看>>
GitHub 优秀的 Android 开源项目
查看>>
win10的资源管理器,边框不见了
查看>>
CentOS 网络设置修改
查看>>
二分图
查看>>
python小白-day5 random模块
查看>>
Git Tips
查看>>
2019春第一次课程设计报告
查看>>