【BZOJ1572】【usaco 2009 open】工作安排job
【问题描述】
Farmer John 有太多的工作要做啊!!!!!!!!为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间。 他的工作日从0时刻开始,有1000000000个单位时间(!)。在任一时刻,他都可以选择编号1~N的N(1 <= N <= 100000)项工作中的任意一项工作来完成。 因为他在每个单位时间里只能做一个工作,而每项工作又有一个截止日期,所以他很难有时间完成所有N个工作,虽然还是有可能。 对于第i个工作,有一个截止时间D_i(1 <= D_i <= 1000000000),如果他可以完成这个工作,那么他可以获利P_i( 1<=P_i<=1000000000 ). 在给定的工作利润和截止时间下,FJ能够获得的利润最大为多少呢?答案可能会超过32位整型。
【分析】
贪心。先将工作按截止时间排序。添加一个时间在0时间,且截止时间为0利润为0,维护一个时间和堆。初始状态下,时间设为极大值。只要当前时间大于当前事件的截止时间,便取出堆顶,利润增加,时间减一。再让时间等于当前事件的截止时间,把当前事件的利润加入堆。
详见代码。
顺便一提,c++可以直接用priority_queue做大根堆,就省打了很多。
【代码】
//bzoj1572(lydsy) //usaco 09 open #include <iostream> #include <cstdio> #include <queue> #include <algorithm> using namespace std;priority_queue<long long, vector<long long> >q;struct apair {int d;int p; }a[100050];bool operator < (const apair& lhs,const apair& rhs) {return lhs.d < rhs.d;}int n; int main() {freopen("job.in","r",stdin);freopen("job.out","w",stdout);cin >> n;for (int i = 1; i <= n; i ++)scanf("%d %d",&a[i].d,&a[i].p);a[++n].d = 0;a[n].p = 0;sort(a + 1,a + n +1);long long ans = 0;long long now = 1000000000;for (int i = n; i > 0; i--){while (now > a[i].d && q.size() > 0){now--;ans += q.top();q.pop();}now = a[i].d;q.push(a[i].p);}cout << ans << endl;fclose(stdin);fclose(stdout); }
转载于:https://www.cnblogs.com/N-C-Derek/archive/2012/07/11/usaco_09_open_job.html
【BZOJ1572】【usaco 2009 open】工作安排job相关推荐
- 2009年度工作安排计划
中国工程建设标准化协会信息通信专业委员会 数据中心工作组 2009年度工作安排计划 1.GB50174<电子信息系统机房设计规范>技术贯标研讨会 根据颁布的国家标准GB50174& ...
- 【bzoj1572】[Usaco2009 Open]工作安排Job 贪心+堆
题目描述 Farmer John 有太多的工作要做啊!!!!!!!!为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间. 他的工作日从0时刻开始,有1000000000个单位时间(!). ...
- [BZOJ1572][Usaco2009 Open]工作安排Job
1572: [Usaco2009 Open]工作安排Job Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1351 Solved: 632 [Sub ...
- bzoj1572 [Usaco2009 Open]工作安排Job
[Usaco2009 Open]工作安排Job Time Limit: 10 Sec Memory Limit: 64 MB Description Farmer John 有太多的工作要做啊!!!! ...
- NKOI 1349 工作安排
[UASCO 2009 OPEN GOLD-2]工作安排 Time Limit:10000MS Memory Limit:65536K Total Submit:63 Accepted:43 Ca ...
- 综合布线工作组2009年工作简报
中国工程建设标准化协会信息通信专业委员会 建标信通字[2009] 06号 综合布线工作组2009年工作简报 为了积极推动综合布线行业技术创新和技术进步,进一步提高综合布线工程设计水平和施工质量,中 ...
- 麦肯锡顾问深度工作安排:将工作可视化
工作表安排的三个步骤 凡是善于工作的人,都有一个共通的方法,那就是他们能够有意识或者无意识地使自己的整体工作可视化. 商业系统型的工作安排法: 流程:为了创造价值明确工作的整体流程 分解:将整体流程分 ...
- 综合布线工作组2008年上半年技术课题工作安排会议通知
中国工程建设标准化协会信息通信专业委员会 建标信通字[2008] 02号 综合布线工作组2008年上半年技术课题工作安排会议通知 各工作组成员 中国工程建设标准化协会信息通信专业委员会综合布线 ...
- 2010年上半年计算机专业技术资格考试工作安排
2010年上半年计算机专业技术资格考试工作安排<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:o ...
- 【BZOJ2245】[SDOI2011]工作安排 拆边费用流
[BZOJ2245][SDOI2011]工作安排 Description 你的公司接到了一批订单.订单要求你的公司提供n类产品,产品被编号为1~n,其中第i类产品共需要Ci件.公司共有m名员工,员工被 ...
最新文章
- Python初学问题-if/else的运用
- 13.multi-term-vector请求
- Java 的Runnable和Callable的区别
- 组策略系列之四:《精典放送:组策略管理20点》
- IP,IP地址,mac地址
- Javascript学习之创建对象
- 转Java 开发环境配置
- 破解vysor为专业版
- 行政区划代码(道路要素)
- 北京大学计算机学院刘利,信息科学学院 科研动态 深化新文科计算机教学改革,实施分类分层次教学体系研讨会在京召开...
- PHP、TP5生成下载word
- win10备份(win10备份的系统怎么还原)
- Android之简单本地音乐播放器
- JS处理JSON字符串转数组,数字超17为处理方法
- nginx 如何查看访问ip和对应访问路径
- 禁止迅雷极速版强制升级为最新迅雷版本的方法,最简单,最有效!
- 线控转向,包含设计说明书,carsim模型,MATLAB Simulink模型全套(工程项目线上支持)
- 车间调度建模系列9|复杂车间调度问题建模实例
- 主机托管的优势及挑战
- wsl2 (Windows Subsystem for Linux)使用学习