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

The company hopes to maximize the number of the tasks which they can complete today.

If there are multiple solutions, they hopes to make the money maximum.

任务和机器都有两个属性,时长和等级。

只有机器的时长和等级都大于等于一项任务,机器才能完成这项任务。并且,

一项任务只能由一台机器完成,一台机器只能完成一项任务。( 每个任务有两个值花费时间x和难度y,)

我的代码:

#include<iostream>	//任务调度的贪心问题
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll; struct node
{
int x,y; //x:花费时间;y:难度等级。
}s1[100005],s2[100005]; //机器数组s1,任务数组s2.
bool cmp(node a,node b)
{
return (a.x>b.x)||(a.x==b.x && a.y>b.y);
}//降序排序准则:按时间由大到小,时间相同则按等级由高到低。
//将任务按照权值1降序排序,权值1相同的按照权值二降序排序,将机器也同样是如此
/*在给任务选择机器的时候,在满足要求的机器中(机器的两个权值都大于任务的两个权值)选择权值1最给小的分配给该任务,
这样保证了后面任务做的可能性增大*/
int main()
{
int n,m,i,j,cnt;
ll sum;
while(~scanf("%d%d",&n,&m)) //输入机器数n,和任务数目m。
{
for(i=0;i<n;i++)
scanf("%d%d",&s1[i].x,&s1[i].y);
for(i=0;i<m;i++)
scanf("%d%d",&s2[i].x,&s2[i].y);
sort(s1,s1+n,cmp);
sort(s2,s2+m,cmp); //按时间由大到小,时间相同则按等级由高到低,将机器和任务分别排序。
//开始遍历任务: //sum:the money they will get.
//找出所有xi(xi>=xj),从中选择yi最小的一个作为这个任务的运行机器,
cnt=sum=0; //cnt:the maximum number of the tasks which the company can complete today ;
int c[105]={0}; //the level of the task的区间是[0,100]. c[]是任务难度等级数组。
for(i=0,j=0;i<m;i++) //j和n和机器为伍;i和m和任务为伍。
{
//对每一个任务而言:从第一个任务开始,挑选最合适的机器将其完成。
while(j<n && s1[j].x>=s2[i].x)
{
c[s1[j].y]++; //自增
j++;
} for(int k=s2[i].y;k<=100;k++)
{
if(c[k])
{
c[k]--; //最合适的原则是:时间大于该任务且等级最低。检索完所有的任务即可得到结果。 sum+=(s2[i].x*500+s2[i].y*2);
cnt++;
break; //break可以帮助退出这一层循环!
}
} //就是要这么贪心滴!
}
printf("%d %lld\n",cnt,sum);
}
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. ACM_区间调度问题(贪心)

    Meetings 系列一 Time Limit: 2000/1000ms (Java/Others) Problem Description: 多年之后的广财ACM编协如日中天,下系多个部门,且编协成 ...

  7. hdu2037 今年暑假不AC[贪心][区间调度问题]

    目录 题目地址 题干 代码和解释 参考 题目地址 hdu2037 题干 代码和解释 本题使用贪心.有三种贪心策略:开始时间最早,结束时间最早,用时最短.第二种是正确的策略,因为结束得越早,后面就可以有 ...

  8. hdu4864 贪心

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

  9. hdu4864 Task贪心好题

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

随机推荐

  1. MySQL锁与事务隔离级别

    一.概述 1.锁的定义 锁是计算机协调多个进程或线程并发访问某一资源的机制. 在数据库中,除了传统的计算资源(如CPU.RAM.IO等)的争用以外,数据也是一种供需要用户共享的资源.如何保证数据并发访 ...

  2. (vue操作storage)Vue plugin for work with local storage,session storage and memo

    vue-ls https://www.npmjs.com/package/vue-ls NPM npm install vue-ls --save Yarn yarn add vue-ls Usage ...

  3. 【python基础语法】第7天作业练习题

    import keyword ''' # 第一题:简单题 1.什么是全局变量? 2.什么是局部变量? 3.函数内部如何修改全局变量(如何声明全局变量 )? 4.写出已经学过的所有python关键字,分 ...

  4. centos7安装opencv3.4.1(同样适用于最新版本4.2.0)

    安装cmake3: echo '[group_kdesig-cmake3_EPEL]name=Copr repo for cmake3_EPEL owned by @kdesigbaseurl=htt ...

  5. Qt代码区字符编码转换

    在做通讯练习的时候,发现发送给小助手字符乱码,图片如下 本人Qt Creator是UTF-8,需要改成gbk,代码如下 #include<QTextCodec> // 提供字符编码转换 Q ...

  6. layui导出表格设置常用函数

    1.设置导出单元格为数字格式 字段名: function (value, line, data) { return { v: value, t: 'n' } }

  7. 解决vue-cli使用组件报错

    今天使用vue-cli,明明写的没错,都是vue-cli自动生成的,编译时怎嘛就会报错呢? 报错信息如下: 浏览器端报错: Failed to compile. ./src/components/Hi ...

  8. 【剑指Offer】63、二叉搜索树的第k个结点

    题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4. 题解一:DFS 借助栈实现 // 中序非递归 public ...

  9. Lucene搜索引擎入门

    一.什么是全文检索?            就是在检索数据,数据的分类:                在计算机当中,比如说存在磁盘的文本文档,HTML页面,Word文档等等......       ...

  10. ImportError: libzmq.so.5 报错

    https://pkgs.org/download/libzmq.so.5()(64bit) # rpm -ivh zeromq-4.1.4-6.el7.x86_64.rpm