POJ-2970-The lazy programmer
2014-04-27 00:38
465 查看
思路:优先队列解决,先按结束日期排序,然后若当前截止日期无法完成当前截止日期之前的所有任务,那么从队伍里选出a值最小的进行“加班”
代码:
代码:
#include<cstdio> #include<cstring> #include<iostream> #include<queue> #include<algorithm> using namespace std; const int maxn=1e5+1000; struct Node { int a; int b; int d; bool operator < (const Node &s)const { return a<s.a; } }a[maxn]; int n; priority_queue<Node> q; int cmp(Node sa,Node sb) { return sa.d<sb.d; } int main() { while(scanf("%d",&n)!=EOF) { while(!q.empty()) q.pop(); for(int i=0;i<n;i++) scanf("%d%d%d",&a[i].a,&a[i].b,&a[i].d); sort(a,a+n,cmp); long long sum=0; double ans=0; for(int i=0;i<n;i++) { sum+=a[i].b; q.push(a[i]); while(!q.empty()&&sum>a[i].d) { Node top=q.top(); q.pop(); if(sum-a[i].d>top.b) { ans+=top.b*1.0/top.a; sum-=top.b; } else { ans+=(sum-a[i].d)*1.0/top.a; top.b-=sum-a[i].d; sum=a[i].d; q.push(top); } } } printf("%.2f\n",ans); } return 0; }
相关文章推荐
- 黑马程序员_OC之类和对象
- 【小白笔记】PHP学习之路 (33) --正则表达式
- eclipse maven plugin 插件 安装 和 配置
- angular 实现总价满100折扣
- GCC,LLVM,Clang编译器对比
- 让自己不空虚就做出点事了
- 简单的three.js实例
- 看书小记2(《C专家编程》)
- MacOS java升级后pycharm 无法使用的解决方案
- 西工大 POJ Sum of Consecutive Prime Numbers
- 关于信号signal()、SIGCHLD......
- c++11 lambda(了解)
- 苹果是如何实现毛玻璃效果
- Linux下安装Mantis所遇到的相关问题
- huffman编码函数
- 微信公众账号怎么获取微信原始ID
- 文本查看命令
- java 做采集器 a标签正则表达式
- 安装和使用python的setup tools
- OC基础—内存管理之autorelease