hdu 4864 任务分配贪心
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 second
typedef __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;
}
hdu 4864 任务分配贪心的更多相关文章
- Hdu 4864(Task 贪心)(Java实现)
Hdu 4864(Task 贪心) 原题链接 题意:给定n台机器和m个任务,任务和机器都有工作时间值和工作等级值,一个机器只能执行一个任务,且执行任务的条件位机器的两个值都大于等于任务的值,每完成一个 ...
- HDU 4864 Task(贪心)
HDU 4864 Task 题目链接 题意:有一些机器和一些任务.都有时间和等级,机器能做任务的条件为时间等级都大于等于任务.而且一个任务仅仅能被一个机器做.如今求最大能完毕任务.而且保证金钱尽量多 ...
- HDU 4864 Task (贪心+STL多集(二分)+邻接表存储)(杭电多校训练赛第一场1004)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4864 解题报告:有n台机器用来完成m个任务,每个任务有一个难度值和一个需要完成的时间,每台机器有一个可 ...
- hdu 4864 Task (贪心 技巧)
题目链接 一道很有技巧的贪心题目. 题意:有n个机器,m个任务.每个机器至多能完成一个任务.对于每个机器,有一个最大运行时间xi和等级yi, 对于每个任务,也有一个运行时间xj和等级yj.只有当xi& ...
- 2014多校第一场D题 || HDU 4864 Task (贪心)
题目链接 题意 : 用N台机器,M个任务,每台机器都有一个最大工作时间和等级,每个任务有一个需要工作时间和一个等级.如果机器完成一个任务要求是:机器的工作时间要大于等于任务的时间,机器的等级要大于等于 ...
- hdu 4864 Task
题目链接:hdu 4864 其实就是个贪心,只是当初我想的有偏差,贪心的思路不对,应该是这样子的: 因为 xi 的权值更重,所以优先按照 x 来排序,而这样的排序方式决定了在满足任务(即 xi > ...
- D - 淡黄的长裙 HDU - 4221(贪心)
D - 淡黄的长裙 HDU - 4221(贪心) James is almost mad! Currently, he was assigned a lot of works to do, so ma ...
- HDU 4864 Task(经典贪心)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=4864 Task Time Limit: 4000/2000 MS (Java/Others) M ...
- hdu 4864 Task(贪心)
pid=4864">http://acm.hdu.edu.cn/showproblem.php?pid=4864 大致题意:有n台机器和m个任务,都有两个參数工作时间time和难度le ...
随机推荐
- iOS.Thread.OSAtomic
1. 原子操作 (Atomic Operations) 编写多线程代码最重要的一点是:对共享数据的访问要加锁. Shared data is any data which more than one ...
- 如何选择稳定的PHP虚拟主机?
先评估自己的业务量有多大如果是新站且流量和数据量都不大的话,建议刚开始先购买低配的即可,待流量逐渐增大时在逐渐升级,灵活又省钱 带宽的限制 虚拟主机带宽是指同一时间内所能承载的数据的能力,直接关系大虚 ...
- CH6202 黑暗城堡
一道最短路+生成树 原题链接 实际上就是生成树的中每个点到节点\(1\)的距离等于原图中这个点到节点\(1\)的最短距离,求这样的生成树的棵数. 先用\(SPFA\)或\(Dijkstra\)求出所有 ...
- Eclipse生成部署描述符(web.xml)
右键点击你的web项目名--->Java EE Tools-->Generate Deployment Descriptor Stub 要想自动生成,只需在创建web项目时,把最后一页的 ...
- About the Cron Expression
About the Cron Expression Cron is use in Linux for the time schedule Format Seconds Minutes Hours Da ...
- db2创建数据库
1.在实例用户用户下执行 db2 create database <DBName> on /home/db2inst1/<DBName> using codeset UTF ...
- The prefix "mvc" for element "mvc:annotation-driven" is not bound 异常
https://www.cnblogs.com/maodot/p/7531042.html The prefix "mvc" for element "mvc:annot ...
- HACK字体安装
参考:https://github.com/source-foundry/Hack Linux的 下载最新版本的Hack. 从存档中提取文件(.zip). 将字体文件复制到系统字体文件夹(通常/usr ...
- day09作业—函数进阶
# 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def func1(*args): sum = 0 for i in args: sum += i print(sum) func1(1 ...
- 通俗理解 CPU && GPU
CPU 力气大啥P事都能干,还要协调.GPU 上面那家伙的小弟,老大让他处理图形,这方面处理简单,但是量大,老大虽然能处理,可是老大只有那么几个兄弟,所以不如交给小弟处理了,小弟兄弟多,有数百至数千个 ...