题意:

给出n个机器和m个任务,对于一天来说,每个机器有最大工作时间xi,可接受最大等级yi,每个任务有一个工作时间xi,一个等级yi,可获价值为500*xi+2*yi,任务需要在一台机器一天内完成,问我们一天可得到的最大价值。

思路:

由于xi的系数500远大于yi的系数,故只要使xi最大,总价值一定最大。

所以我们从任务开始贪心而不选择从机器开始贪心,将任务和机器以时间从大到小,相同则使等级从大到小进行排序,然后对于每一个任务,记录工作时间大于它的机器,然后从任务的等级开始往上搜,搜到即记录并跳出,最后输出即可。

推荐blog:

http://blog.csdn.net/a601025382s/article/details/38046927

http://www.cnblogs.com/-sunshine/p/3862810.html

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1e5+; int n,m,maxx,sum,coun;
struct node
{
int time,level;
bool operator<(const node& p)const
{
if(time==p.time) return level>p.level;
return time>p.time;
}
}a[maxn],b[maxn];
int c[]; int main()
{
while(scanf("%d%d",&n,&m)==)
{
coun=;
__int64 sum=;
for(int i=;i<=n;i++) {scanf("%d%d",&a[i].time,&a[i].level);}
for(int i=;i<=m;i++) {scanf("%d%d",&b[i].time,&b[i].level);}
sort(a+,a+n+);sort(b+,b+m+);
memset(c,,sizeof(c));
//for(int i=1;i<=n;i++) printf("%d %d\n",a[i].time,a[i].level);
//for(int i=1;i<=m;i++) printf("%d %d\n",b[i].time,b[i].level);
for(int i=,j=;i<=m;i++)
{
while(j<=n&&a[j].time>=b[i].time)//统计>=当前任务时间的机器
{
c[a[j].level]++;//记录机器的等级
j++;
}
for(int k=b[i].level;k<=;k++)//从当前任务的等级开始
{
if(c[k])//找到最小的等级
{
coun++;
c[k]--;
sum+=*b[i].time+*b[i].level;
break;
}
}
}
printf("%d %I64d\n",coun,sum);
}
return ;
}

HDU4864:Task(贪心)的更多相关文章

  1. [HDU4864]Task (贪心)

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

  2. hdu4864 Task贪心好题

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4864 题目大意: 有n个机器,m个任务.每个机器至多能完成一个任务.对于每个机器,有一个最大运行时间 ...

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

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

  4. HDU4864:Task(贪心)

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

  5. hdu4864 hdu4268 贪心 lower_bound

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

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

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

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

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

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

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

  9. HDU 4864 Task(贪心)

    HDU 4864 Task 题目链接 题意:有一些机器和一些任务.都有时间和等级,机器能做任务的条件为时间等级都大于等于任务.而且一个任务仅仅能被一个机器做.如今求最大能完毕任务.而且保证金钱尽量多 ...

  10. HDU4864 Task

    题意 Today the company has m tasks to complete. The ith task need xi minutes to complete. Meanwhile, t ...

随机推荐

  1. Android 清除canvas 笔迹代码

    canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); canvas.drawLine(pointX, , event.getX(), ...

  2. nodejs初写心得

    nodejs安装后如何查看和安装其他工具 网上nodejs的文章已经很多,这里只是写下自己的小小心得,如果能帮到别人当然更好. 安装nodejs这里就不叙述了,直接上nodejs官网下载就好了,初学者 ...

  3. 高斯消元 分析 && 模板 (转载)

    转载自:http://hi.baidu.com/czyuan_acm/item/dce4e6f8a8c45f13d7ff8cda czyuan 先上模板: /* 用于求整数解得方程组. */ #inc ...

  4. multipath 安装配置

    二. 安装配置 2.1 安装Multipath 查看相关包: [root@rac1 ~]# rpm -qa|grep device-mapper device-mapper-multipath-0.4 ...

  5. android通过httpClient请求获取JSON数据并且解析

    使用.net创建一个ashx文件,并response.write  json格式 public void ProcessRequest(HttpContext context) { context.R ...

  6. AspNet WebApi OData 学习

    OData介绍:是一个查询和更新数据的Web协议.OData应用了web技术如HTTP.Atom发布协议(AtomPub)和JSON等来提供对不同应用程序,服务 和存储的信息访问.除了提供一些基本的操 ...

  7. I.MX6 隐藏电池图标

    /********************************************************************** * I.MX6 隐藏电池图标 * 声明: * 有些时候设 ...

  8. jvm内部现成运行

    hi,all 最近抽时间把JVM运行过程中产生的一些线程进行了整理,主要是围绕着我们系统jstack生成的文件为参照依据.  前段时间因为系统代码问题,造成性能瓶颈,于是就dump了一份stack出来 ...

  9. HDU 5432 Pyramid Split

    题意:有n个底面是正方形的四棱锥,用一个水平截面将所有四棱锥分成两半,要求上一半体积的和等于下一半,求水平截面的高度,输出整数部分. 解法:二分截面高度.比赛的时候二分写不明白了orz…… 代码: # ...

  10. SELECT样式,兼容IE6

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...