题意:    

   给你n太机器,m个任务,每个任务和机器都有两个权值x,y,每个机器只能被一个任务使用,条件是机器的两个权值分别比任务的大于等于,每个任务获得的价值是x*500+y*2,问你最多能完成多少任务,在完成任务最多的条件下,最多能获得多少价值。



思路: 

      一开始没想到是贪心,我读完题第一感觉就是费用流啊!后来一看数据,费用流不行(如果数据小点费用流果断能简单处理),后来别人说是贪心,我很不理解,贪心如果只是求最大的个数我可以求,也可以理解,但怎么保证最大价值呢?蛋疼,怪我没有注意那个公式v = x*500 + y * 2 哎!,sb了,人家不可能随便给你个式子啊,y的范围是<=100的,也就是说y怎么样也没有x变化1价值增加的多,所以我们要优先保护x,所以在二级排序的时候先以x,在y,这样就可以在保证个数最大的情况下价值最大了,整个过程还是简单贪心,排

序的条件是这样的

return a.x>b.x || a.x==b.x&&a.y>b.y || a.x==b.x && a.y==b.y &&a.v>b.v

v是我自己虚拟出来的,机器是1,任务是0,为了吧机器放在前面

然后for循环处理,从大到小,每个任务都要被他前面的机器中能处理他中y最小的那个处理。更新到最后就行了。


#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<set>

using namespace
std; typedef struct
{
int
x ,y ,v;
}
NODE; NODE node[220000];
set<int>my_set;
int
set_num[105]; bool camp(NODE a ,NODE b)
{
return
a.x > b.x || a.x == b.x && a.y > b.y
||
a.x == b.x && a.y == b.y && a.v > b.v;
} int main ()
{
int
n ,m ,i ;
__int64
ans1 ,ans2;
while(~
scanf("%d %d" ,&n ,&m))
{
for(
i = 1 ;i <= n ;i ++)
{

scanf("%d %d" ,&node[i].x ,&node[i].y);
node[i].v = 1;
}
for(
i = 1 ;i <= m ;i ++)
{

scanf("%d %d" ,&node[i+n].x ,&node[i+n].y);
node[i+n].v = 0;
}

sort(node + 1 ,node + n + m + 1 ,camp);
my_set.clear();
my_set.insert(1050);
memset(set_num ,0 ,sizeof(set_num));
for(
ans1 = ans2 = 0 ,i = 1 ;i <= n + m ;i ++)
{
if(
node[i].v)
{

my_set.insert(node[i].y);
set_num[node[i].y] ++;
}
else
{
int
now = *my_set.lower_bound(node[i].y);
if(
now != 1050)
{

ans1 += (__int64)(node[i].x * 500) + (__int64)(2 * node[i].y);
ans2 ++;
if(!(--
set_num[now]))
my_set.erase(now);
}
}
}

printf("%I64d %I64d\n" ,ans2 ,ans1);
}
return
0;
}

hdu4864 贪心的更多相关文章

  1. hdu4864 hdu4268 贪心 lower_bound

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

  2. [HDU4864]Task (贪心)

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

  3. POJ1723,1050,HDU4864题解(贪心)

    POJ1723 Soldiers 思维题. 考虑y坐标,简单的货舱选址问题,选择中位数即可. 再考虑x坐标,由于直接研究布置方法非常困难,可以倒着想:不管如何移动,最后的坐标总是相邻的,且根据贪心的思 ...

  4. HDU4864:Task(贪心)

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

  5. hdu4864不是一般的贪心

    题目表达的非常清楚,也不绕弯刚开始以为最大权匹配,仔细一想不对,这题的数据双循环建图都会爆,只能先贪心试一下,但一想贪心也要双循环啊,怎么搞? 想了好久没头绪,后来经学长提醒,可以把没用到的先记录下来 ...

  6. 任务调度问题(贪心) hdu4864

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4864 The company hopes to maximize the number of the t ...

  7. hdu4864 Task贪心好题

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

  8. HDU4864:Task(贪心)

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

  9. BZOJ 1692: [Usaco2007 Dec]队列变换 [后缀数组 贪心]

    1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1383  Solved: 582[Submit][St ...

随机推荐

  1. zabbix 面板graph图上没有数据显示

    1. 问题: zabbix_server日志出现大量如下错误: query failed: [1526] Table has no partition for value 1507509984 2. ...

  2. 【老孟Flutter】Flutter 2.0 重磅更新

    老孟导读:昨天期待已久的 Flutter 2.0 终于发布了,Web 端终于提正了,春季期间我发布的一篇文章,其中的一个预测就是 Web 正式发布,已经实现了,还有一个预测是:2021年将是 Flut ...

  3. linux时间问题

    如果遇到创建时间和更新时间,不一致,先将时间调整为一致. 导致不一致的原因可能是时区不对,使用 tzselect ,将时区调整为Asia/Shanghai , cp /usr/share/zonein ...

  4. CMDB项目要点总结之中控机

    1.基于paramiko对远程主机执行命令操作 秘钥形式 private_key = paramiko.RSAKey.from_private_key_file('c:/Users/用户名/.ssh/ ...

  5. C#开发BIMFACE系列37 网页集成开发1:审图系统中加载模型或图纸

    系列目录     [已更新最新开发文章,点击查看详细] 在之前的<C#开发BIMFACE系列>中主要介绍了BIMFACE平台提供的服务端API接口的封装开发与测试过程. 服务端API测试通 ...

  6. C语言中复杂声明的解读和简化

    code[class*="language-"], pre[class*="language-"] { color: rgba(51, 51, 51, 1); ...

  7. Maven项目中resources配置总结

    目录 背景 第一部分 基本配置介绍 第二部分 具体配置和注意事项 第三部分 读取resources资源 参考文献及资料 背景 通常Maven项目的文件目录结构如下: # Maven项目的标准目录结构 ...

  8. UnitThreeSummary

    目录 一.JML的梳理与总结 二.SMT Solver的部署与验证 三.JMLUnitNG的部署与测试 四.作业的设计与总结 第一次作业 第二次作业 第三次作业 五.BUG 六.总结与反思 一.JML ...

  9. upload-labs通关历程

    使用靶场前,先配置php版本为5.2,和下列对应配置. php.ini magic_quotes_gpc  Off php<5.3.4 httpd.conf AddType applicatio ...

  10. Python基础之:struct和格式化字符

    目录 简介 struct中的方法 格式字符串 字节顺序,大小和对齐方式 格式字符 格式数字 格式字符 格式字符串 填充的影响 复杂应用 简介 文件的存储内容有两种方式,一种是二进制,一种是文本的形式. ...