1572: [Usaco2009 Open]工作安排Job

Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 1351  Solved: 632 [Submit][Status][Discuss]

Description

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位整型。

Input

第1行:一个整数N. 第2~N+1行:第i+1行有两个用空格分开的整数:D_i和P_i.

Output

输出一行,里面有一个整数,表示最大获利值。

Sample Input

3
2 10
1 5
1 7

Sample Output

17

HINT

第1个单位时间完成第3个工作(1,7),然后在第2个单位时间完成第1个工作(2,10)以达到最大利润

堆 + 贪心
和 [JSOI2007]建筑抢修 一样
#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char buf[10000000], *ptr = buf - 1;
inline int readint(){int n = 0;char ch = *++ptr;while(ch < '0' || ch > '9') ch = *++ptr;while(ch <= '9' && ch >= '0'){n = (n << 1) + (n << 3) + ch - '0';ch = *++ptr;}return n;
}
const int maxn = 100000 + 10;
typedef long long ll;
struct Node{int d, p;Node(){}Node(int _d, int _p): d(_d), p(_p){}bool operator < (const Node &x) const{return d < x.d;}
}a[maxn], t;
class cmp{public:bool operator () (const Node &a, const Node &b){return a.p > b.p;}
};
priority_queue<Node, vector<Node>, cmp> q;
int main(){fread(buf, sizeof(char), sizeof(buf), stdin);int n = readint();for(int i = 1; i <= n; i++){a[i].d = readint();a[i].p = readint();}sort(a + 1, a + n + 1);int tot = 0;long long ans = 0;for(int i = 1; i <= n; i++){if(tot == a[i].d){t = q.top();if(a[i].p > t.p){q.pop();q.push(a[i]);ans += a[i].p - t.p;}}else{tot++;ans += a[i].p;q.push(a[i]);}}printf("%lld\n", ans);return 0;
}

转载于:https://www.cnblogs.com/ruoruoruo/p/7486650.html

[BZOJ1572][Usaco2009 Open]工作安排Job相关推荐

  1. bzoj1572 [Usaco2009 Open]工作安排Job

    [Usaco2009 Open]工作安排Job Time Limit: 10 Sec Memory Limit: 64 MB Description Farmer John 有太多的工作要做啊!!!! ...

  2. [BZOJ1572] [Usaco2009 Open]工作安排Job(贪心 + 堆)

    传送门 把任务按照d排序 一次加入到堆中,如果当前放不进堆中,并且比堆中最小的大, 就从堆中弹出一个数,再把当前的数放进去 #include <queue> #include <cs ...

  3. 【bzoj1572】[Usaco2009 Open]工作安排Job 贪心+堆

    题目描述 Farmer John 有太多的工作要做啊!!!!!!!!为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间. 他的工作日从0时刻开始,有1000000000个单位时间(!). ...

  4. [Usaco2009 Open]工作安排Job

    Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 1457  Solved: 687 [Submit][Status][Discuss] Descript ...

  5. 【BZOJ】1572: [Usaco2009 Open]工作安排Job

    [题意]给定n项工作的截止时间和价值,每项工作需要1单位时间完成,求最大价值.n<=10^5. [算法]贪心+堆 [题解] 如果是访问到x时将d[x]前的点从价值最大的能加就加是错误的贪心,因为 ...

  6. bzoj 1572: [Usaco2009 Open]工作安排Job

    Description Farmer John 有太多的工作要做啊!!!!!!!!为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间. 他的工作日从0时刻开始,有1000000000个单 ...

  7. 麦肯锡顾问深度工作安排:将工作可视化

    工作表安排的三个步骤 凡是善于工作的人,都有一个共通的方法,那就是他们能够有意识或者无意识地使自己的整体工作可视化. 商业系统型的工作安排法: 流程:为了创造价值明确工作的整体流程 分解:将整体流程分 ...

  8. 综合布线工作组2008年上半年技术课题工作安排会议通知

    中国工程建设标准化协会信息通信专业委员会   建标信通字[2008] 02号 综合布线工作组2008年上半年技术课题工作安排会议通知   各工作组成员 中国工程建设标准化协会信息通信专业委员会综合布线 ...

  9. 2010年上半年计算机专业技术资格考试工作安排

      2010年上半年计算机专业技术资格考试工作安排<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:o ...

最新文章

  1. SAP Marketing Cloud功能简述(三) 营销活动内容设计和产品推荐
  2. 章鱼黑的第一篇博客~
  3. 学习过程中的一些想法
  4. PTA的非零返回原因以及解决办法
  5. 三菱PLC编程软件Work2的FB块加密后的解密方法
  6. PX4原生固件,position_estimator_inav解读
  7. python 表格处理项目该如何分工_python 处理 Excel 表格
  8. 利用Visual C++ 实现QQ消息群发 ,大神实际测试,已成功发送消息
  9. So Who's Counting? by Erin McHugh and Emily Luchetti
  10. 7-15 地下迷宫探索
  11. pd.read_csv报错:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xc8 in position 0: invalid contin
  12. (详解)opencv里的cv2.resize改变图片大小Python
  13. meshgrid()+plt.contourf()用法
  14. Android广播(Broadcast)
  15. 《花开伊吕波》26集片尾曲歌词
  16. python中加减乘除_Python基础算法综合:加减乘除四则运算方法
  17. Git提交单个文件过大,git error: remote unpack failed:error Object too large
  18. java实现倒计时闹钟_倒计时闹钟软件下载-倒计时闹钟app下载v1.2.4-西西软件下载...
  19. 【2019.07-2020.06】这一年的心路历程
  20. 怎么把视频里的音乐提取成音频?一分钟帮你搞定

热门文章

  1. 使用python愉快地做高数线代题目~
  2. 2022-2028年中国SCR脱硝催化剂行业研究及前瞻分析报告
  3. 2022-2028年中国环氧结构胶行业市场研究及投资前景预测报告
  4. Anaconda3+python3.7.10+TensorFlow2.3.0+PyQt5环境搭建
  5. jquery过滤HTML标签方法
  6. Keras框架下的保存模型和加载模型
  7. Nginx最新版安装教程(Windows+Linux)
  8. 嵌入式C程序基础与编程结构
  9. 电脑识别指令和代码的原理
  10. Java IDEA Debug进制二维数组