hdu 4864 任务分配贪心
来源:互联网 发布:java数组为空和为null 编辑:程序博客网 时间:2024/05/16 07:06
http://acm.hdu.edu.cn/showproblem.php?pid=4864
有n台机器,m个任务,每台机器有xi时间,yi等级,每个任务也有xj,yj,当一个任务可以被处理的条件是,xj<=xi 且 yj<yi,处理完产生 500*xj+2*yj 的价值,问你最多产生的价值是多少?
对于每个任务,时间大的优先去匹配,时间相同的,等级大的优先去匹配,因为时间占得多,时间多1就多500,而等级最多才差200。然后匹配的时候,尽量使用等级小的去匹配,而时间只要大于它的都可以用,因为是按时间优先,所以如果该时间能匹配大的,其他肯定也能匹配,那么肯定优先匹配大的,所以只要在等级上尽量小就可以了
#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <string>#include <queue>#include <iostream>#include <algorithm>using namespace std;#define RD(x) scanf("%d",&x)#define RD2(x,y) scanf("%d%d",&x,&y)#define clr0(x) memset(x,0,sizeof(x))#define x first#define y secondtypedef __int64 LL;int a[1500][105],b[1500][150],t,f;LL g;int main(){ int m,n,x,y; while(~RD2(n,m)){ clr0(a),clr0(b); for(int i = 0;i < n;++i){ RD2(x,y);a[x][y]++; } for(int i = 0;i < m;++i){ RD2(x,y);b[x][y]++; } g = t = 0; for(int i = 1440;i >= 0;i--){ int f = 0; for(int j = 101;j >= 0;--j){ f += a[i][j]; if(f >= b[i][j]){ f -= b[i][j]; t += b[i][j]; g += (LL)b[i][j]*(LL)(500*i+2*j); for(int k = j;k <= 101;++k){ if(a[i][k] >= b[i][j]){ a[i][k] -= b[i][j]; break; } else{ b[i][j] -= a[i][k]; a[i][k] = 0; } } }else{ t += f; g += (LL)f*(LL)(500*i+2*j); for(int k = j;k <= 101;++k){ if(a[i][k] >= f){ a[i][k] -= f; break; } else{ f -= a[i][k]; a[i][k] = 0; } } f = 0; } } if(i){ for(int j = 101;j >= 0;--j) a[i-1][j] += a[i][j]; } } printf("%d %I64d\n",t,g); } return 0;}
0 0
- hdu 4864 任务分配贪心
- 贪心算法实例(一):多任务分配问题
- hdu 1789 任务调度 贪心或dp
- HDU 4864 Task(贪心) (机器完成目标任务, 两个权值, 小范围打表)
- 任务分配
- 任务分配
- 任务分配
- hdu 4864 Task 贪心
- hdu 4864 Task 贪心
- HDU 4864 Task(贪心)
- HDU 4864 Task(贪心)
- 【HDU 4864】Task【贪心】
- HDU 4864 Task 贪心
- HDU 4864 贪心
- HDU 4864 Task 贪心
- hdu 4864 Task(贪心)
- HDU 4864 Task (贪心)
- 贪心 之 hdu 4864
- 黑马程序员--Java基础--继承、抽象类、接口、内部类、异常、包
- hdu 4821 String
- 建立红黑树(左旋、右旋、插入、维护)代码+验证
- 计算机网络课程设计二——获取本地适配器的主要信息
- 网络传输协议介绍
- hdu 4864 任务分配贪心
- HDOJ题目2608 0 or 1(数学)
- selenium+java+testNG+pageObject深入理解自动化测试框架
- 重写 - init 方法总结
- 第一篇博文
- 【dp:LIS】hdu1025
- listview每一条中间有空隙问题解决
- Struts2的工作流程及原理
- printf(&unix["\021%six\012\0"], (unix)["have"] + "fun" - 0x60);