题意:    

   给你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. 树莓派4b通过外接ssd硬盘启动系统失败的排查和解决

    树莓派4b通过外接ssd硬盘启动系统失败,症状: 屏幕卡在黑屏或提示 mmc1:Controller never released inhibit bit(s).... 先说如何设置硬盘启动,后面是解 ...

  2. Git代码分支开发工作流程

    本文的工作流程,有一个共同点:都采用"功能驱动式开发"(Feature-driven development,简称FDD). 它指的是,需求是开发的起点,先有需求再有功能分支(fe ...

  3. golang 微服务以及相关web框架

    golang 中国gocn golang Applicable to all database connection pools xorm是一个简单而强大的Go语言ORM库,通过它可以使数据库操作非常 ...

  4. 学习Python的书籍——入门到进阶

    入门读物 <Python基础教程>(Beginning Python From Novice to Professional) <Python学习手册>(Learning Py ...

  5. od快捷键

    视图.查看相关: Alt+l  记录 Alt+e 可执行模块 Alt+m 内存 Alt+c cpu(反汇编视图) Ctrl+p 补丁 Alt+k 调用堆栈 Alt+b 断点 Alt+f5 设置窗口总在 ...

  6. .NET Core 环境变量详解

    一.概述 软件从开发到正式上线,在这个过程中我们会分为多个阶段,通常会有开发.测试.以及上线等.每个阶段对应的环境参数配置我们会使用不同的参数.比如数据库的连接字符串,开发环境一般我们都是连接的测试库 ...

  7. python那些需要知道的事儿——逻辑运算与比大小

    一.逻辑运算 逻辑运算符: and   or   not,结果为布尔值(True和False) 1.基本逻辑运算符介绍 not :将后面的逻辑运算结果取反 >>> not 1 < ...

  8. SFDC Trigger里before和after的区别

    最近项目开始用Trigger来进行Validation Check.也知道可以通过配置Object里的Validation Rule来进行Check,但是项目想如果有Trigger里就都在Trigge ...

  9. mybatis-plus的Could not set property 'updateDate' of 'class com.example.pojo.User' with value 'Fri Jul 24 10:29:39 CST 2020' Cause: java.lang.IllegalArgumentException: argument type mismatch解决方案

    按照官网在写mybatis-plus的自动填充功能一直报错,发现官网的解说不全,数据库是datetime类型,java程序又是date,类型不匹配 org.mybatis.spring.MyBatis ...

  10. Elasticsearch索引模板-转载

    转载地址:https://dongbo0737.github.io/2017/06/13/elasticsearch-template/#similar_posts Elasticsearch索引模板 ...