题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=4864

题目大意:

有n个机器,m个任务。每个机器至多能完成一个任务。对于每个机器,有一个最大运行时间xi和等级yi,对于每个任务,也有一个运行时间xj和等级yj。只有当xi>=xj且yi>=yj的时候,机器i才能完成任务j,并获得500*xj+2*yj金钱。问最多能完成几个任务,当出现多种情况时,输出获得金钱最多的情况。

思路:

由于x的权重远大于y的权重,因此我们将工作按照x降序排列, x相同的时候按照y降序排列, 这样就可以保证钱数最多。如果我们根据机器去选任务的话,会发现不好选,比如这个例子

机器1:100 3 机器2:100 2

任务1:75 2   任务2:65 3,如果机器从大到小,任务从大到小去选择,会出错,也不好控制得到最优解,任务从小到大也是这样。

所以应该根据任务去选择机器,任务从大到小排列好,遍历的时候,每次先把所有时间大于该任务时间的机器按照等级存储下来,同等级的机器是等效的,因为只要能完成任务都是等效的,然后取其中恰好大于等于该任务等级的机器(这样可以保证等级高的留给之后的使用),之后选下一个也是这样,这样做的话,之前存储的机器由于时间大于第一个任务,所以时间上肯定可以满足之后的所有任务,等级的话也是取恰好大于等于自己任务的等级的机器

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
const int maxn = 1e6 + ;
const int INF = << ;
int T, n, m;
struct node
{
int x, y;
bool operator < (const node & a)const
{
return x > a.x || x == a.x && y > a.y;
}
};
node a[maxn], b[maxn];
int c[];
int main()
{
while(cin >> n >> m)
{
for(int i = ; i < n; i++)cin >> a[i].x >> a[i].y;
for(int i = ; i < m; i++)cin >> b[i].x >> b[i].y;
sort(a, a + n);
sort(b, b + m);
int j = ;
memset(c, , sizeof(c));
ll sum = ;
int ans = ;
for(int i = ; i < m; i++)//遍历任务
{
while(j < n && a[j].x >= b[i].x)//存储大于当前任务时长的机器,这些机器不仅可以当前使用,之后的任务也可以使用
{
c[a[j].y]++;//c数组记录当前等级可用机器数目
j++;
}
for(int k = b[i].y; k < ; k++)//等级从小到大,目的是取当前可用机器中等级最小
{
if(c[k])//存在可用机器
{
c[k]--;//当前等级机器减一
sum += b[i].x * + * b[i].y;//任务完成利润增加
ans++;//任务完成数目+1
break;
}
}
}
printf("%d %lld\n", ans, sum);
}
return ;
}

hdu4864 Task贪心好题的更多相关文章

  1. [HDU4864]Task (贪心)

    此图和上一篇博客的图一起看有奇效 题意 https://vjudge.net/problem/HDU-4864 思路 贪心 代码 by lyd 我实在是敲不来 #include <iostrea ...

  2. Hdu 4864(Task 贪心)(Java实现)

    Hdu 4864(Task 贪心) 原题链接 题意:给定n台机器和m个任务,任务和机器都有工作时间值和工作等级值,一个机器只能执行一个任务,且执行任务的条件位机器的两个值都大于等于任务的值,每完成一个 ...

  3. HDU 4864 Task (贪心+STL多集(二分)+邻接表存储)(杭电多校训练赛第一场1004)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4864 解题报告:有n台机器用来完成m个任务,每个任务有一个难度值和一个需要完成的时间,每台机器有一个可 ...

  4. 贪心/思维题 Codeforces Round #310 (Div. 2) C. Case of Matryoshkas

    题目传送门 /* 题意:套娃娃,可以套一个单独的娃娃,或者把最后面的娃娃取出,最后使得0-1-2-...-(n-1),问最少要几步 贪心/思维题:娃娃的状态:取出+套上(2),套上(1), 已套上(0 ...

  5. 贪心/思维题 UVA 11292 The Dragon of Loowater

    题目传送门 /* 题意:n个头,m个士兵,问能否砍掉n个头 贪心/思维题:两个数组升序排序,用最弱的士兵砍掉当前的头 */ #include <cstdio> #include <c ...

  6. 2014多校第一场D题 || HDU 4864 Task (贪心)

    题目链接 题意 : 用N台机器,M个任务,每台机器都有一个最大工作时间和等级,每个任务有一个需要工作时间和一个等级.如果机器完成一个任务要求是:机器的工作时间要大于等于任务的时间,机器的等级要大于等于 ...

  7. HDU4864:Task(贪心)

    Problem DescriptionToday the company has m tasks to complete. The ith task need xi minutes to comple ...

  8. hdu4864 hdu4268 贪心 lower_bound

    hdu4864 题意: 有n个机器,m个任务,n,m<=100000,每个机器都有工作时间的最大限制xi(0<xi<1440)和完成的最大难度yi(0<=yi<=100) ...

  9. HDU4864 Task(算竞进阶习题)

    贪心 比较巧妙的贪心..先把所有机器和任务按时间是第一关键字,等级为第二关键字排序. 然后用机器去匹配每一个任务. 排序之后,在时间上满足当前任务的机器,必定也在时间上满足后面的机器,所以我们每次把时 ...

随机推荐

  1. JAVA常见简答题

    一.基础知识 1.简述使用文本编辑器和 JDK 创建并运行 Java 应用程序的基本步骤. 答:①打开文本编辑器输入 Java 源程序: ②保存文件,文件名为源程序中 public 修饰类的类名,扩展 ...

  2. 【Bootstrap】 bootstrap-select2下拉菜单插件

    这次开发了个小TRS系统,虽然是很小,但是作为初心者,第一次用到了很多看起来洋气使用起来有相对简单的各种前端(主要是和bootstrap配合使用)组件.包括bootstrap-select2,boot ...

  3. 【highlight.js】页面代码高亮插件

    [highlight.js] 很多博客都支持页面插入各种语言的代码,而这些代码肯定是有高亮设置的.那么在我们自己的页面上如何进行代码高亮设置?有现成的这个highlight.js插件我们可以使用. h ...

  4. 【网络】 数据链路层&物理层笔记

    数据链路层 简称链路层,功能在于将数据包封装成帧,控制帧对介质的访问.链路层连接了物理介质和其之上抽象层,可以使上层不用关心用什么方法在什么介质中传输信息. 在帧被传输时经过的每一跳,每个中间设备(通 ...

  5. nuxt 运行项目后 中总是报错

    报错的内容: nuxt.config.js中的图片 如果出现第一张图的中的错误: 请注释掉第二张图中extend里面的loader:'eslit-loader',或者把extend里面if下面的内容全 ...

  6. 使用Listview控件显示数据

    1.图像列表控件 ImageList是含有图像对象的集合,可以通过索引或关键字引用该集合中的每个对象. ImageList空间的属性 属性 说明 Images 存储在图像列表中的所有图像 ImageS ...

  7. springboot elasticsearch 集成注意事项

    文章来源: http://www.cnblogs.com/guozp/p/8686904.html 一 elasticsearch基础 这里假设各位已经简单了解过elasticsearch,并不对es ...

  8. Beta冲刺 第四天

    Beta冲刺 第四天 1. 昨天的困难 1.网页使用了一些网上现成的模板,其主要是使用像素做处理的,所以检查起来比较费事费力. 2.使用github代码merge时出现了问题.所以花费了不少的时间在人 ...

  9. 网络1712--c语言字符数组作业总结..

    ---恢复内容开始--- 作业亮点 1.总体情况 1.大部分同学利用了流程图后,对于思路的理解有了提升. 2.很多同学在总结方面写的很不错,能够罗列问题贴出解决问题,我们能够看到你们的进步 2.作业发 ...

  10. 20162318 实验三《 敏捷开发与XP实践》实验报告

    北京电子科技学院(BESTI) 实 验 报 告 课程:程序设计与数据结构 班级:1623班 姓名:张泰毓 指导老师:娄老师.王老师 实验日期:2017年5月12日 实验密级:非密级 实验器材:带Lin ...