2014 Multi-University Training Contest 1 — D. Task
题目链接: pid=4864">http://acm.hdu.edu.cn/showproblem.php?pid=4864
题目大意:
有N个机器。M个任务。
当中每一个机器有xi,yi。(xi表示每台机器的最长工作时间。yi表示机器能够完毕的任务难度值)
每一个任务有xi,yi。(xi表示完毕该任务须要的时间,yi表示任务的难度)每完毕一个任务,能够得到一笔钱:500 * xi + 2 * yi。
一台机器最多仅仅能做一个任务。一个任务最多仅仅能被完毕一次。
问:最多能完毕几个任务,且在完毕任务最多的情况下,能得到钱数最多为多少。
解题思路:
贪心的想法。将机器和任务依照一下规则排序:
假设xi不同。依照xi的大小从大到小排序;
假设xi同样,yi不同。依照yi的大小从大到小排序;
假设上述均同样,则依照机器排在任务前面。
经过排序之后。就保证了前面的 x 值一定比后面的 x 值大,仅仅须要比較 y 值就可以。遍历一次,假设碰到机器,则将 y 值存进一个multiset里面。假设碰到任务。那么在multiset里面找一个最小的不小于 yi 的值。用该机器去完毕该任务。
代码:
using namespace std;
typedef long long ll;
struct node {
int x, y, type;
} a[200010];
int n, m;
bool cmp(node s, node v) {
if (s.x != v.x) return s.x > v.x;
if (s.y != v.y) return s.y > v.y;
if (s.type != v.type) return s.type > v.type;
}
multiset<int> s;
multiset<int> :: iterator it;
int main () {
int x, y, cnt = 0;
while(~scanf("%d%d", &n, &m)) {
cnt = 0;
for (int i = 0; i < n; i++) {
scanf("%d%d", &a[cnt].x, &a[cnt].y);
a[cnt++].type = 1;
}
for (int i = 0; i < m; i++) {
scanf("%d%d", &a[cnt].x, &a[cnt].y);
a[cnt++].type = 0;
}
sort(a, a + cnt, cmp);
ll ans = 0;
ll t = 0;
s.clear();
for (int i = 0; i < cnt; i++) {
if (a[i].type == 1) s.insert(a[i].y);
else {
if(!s.empty()) {
it = s.lower_bound(a[i].y);
if (it == s.end()) continue;
t++;
ans += a[i].y * 2 + 500 * a[i].x;
s.erase(it);
}
}
}
printf("%I64d %I64d\n", t, ans);
}
return 0;
}
2014 Multi-University Training Contest 1 — D. Task的更多相关文章
- 2014 Multi-University Training Contest 9#11
2014 Multi-University Training Contest 9#11 Killing MonstersTime Limit: 2000/1000 MS (Java/Others) ...
- 2014 Multi-University Training Contest 9#6
2014 Multi-University Training Contest 9#6 Fast Matrix CalculationTime Limit: 2000/1000 MS (Java/Oth ...
- HDU4888 Redraw Beautiful Drawings(2014 Multi-University Training Contest 3)
Redraw Beautiful Drawings Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- 2014 Multi-University Training Contest 1/HDU4864_Task(贪心)
解题报告 题意,有n个机器.m个任务. 每一个机器至多能完毕一个任务.对于每一个机器,有一个最大执行时间Ti和等级Li,对于每一个任务,也有一个执行时间Tj和等级Lj.仅仅有当Ti>=Tj且Li ...
- hdu 4946 2014 Multi-University Training Contest 8
Area of Mushroom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- 2014 Multi-University Training Contest 1/HDU4861_Couple doubi(数论/法)
解题报告 两人轮流取球,大的人赢,,, 贴官方题解,,,反正我看不懂.,,先留着理解 关于费马小定理 关于原根 找规律找到的,,,sad,,, 非常easy找到循环节为p-1,每个循环节中有一个非零的 ...
- hdu 4937 2014 Multi-University Training Contest 7 1003
Lucky Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) T ...
- hdu 4941 2014 Multi-University Training Contest 7 1007
Magical Forest Time Limit: 24000/12000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
- hdu 4939 2014 Multi-University Training Contest 7 1005
Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/ ...
随机推荐
- ASP.NET MVC 5 学习教程:添加模型
原文 ASP.NET MVC 5 学习教程:添加模型 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控 ...
- windows下安装ruby和 rails的痛苦经历
准备安装ruby on rails,在网上搜了下,步骤都类似,但实际安装过程中却碰到很多问题.下面详细说下: 说明下,文章是按照我尝试的过程描述的.但最终是靠 运行 railsinstaller一键式 ...
- linux 学习:环境变量设置
一.临时环境变量 临时环境变量,只对当前打开的shell生效,shell关闭后,环境变量失效. 设置方法一: 分两步 MYPARA=hello export MYPARA 设置方法二:一步完成 exp ...
- zk mysql 主从自动切换
zookeeper测试: DBI 版本: /DBI-1.616# zjtest7-redis:/root/DBD-mysql-4.031# perl Makefile.PL Can't exec &q ...
- 【笨木头Lua专栏】基础补充08:协同程序之resume-yield间的数据返回
这次要介绍几个事实上非常easy,可是一定要小心的返回值规则. 笨木头花心贡献,哈?花心?不,是用心~ 转载请注明.原文地址: http://www.benmutou.com/archives/173 ...
- 四、Nginx负载均衡upstream
user www; worker_processes ; error_log /usr/local/nginx/logs/error.log crit; pid /usr/local/nginx/lo ...
- 转:git windows中文 乱码问题解决汇总
it的Windows版本Msysgit对中文的支持不够好 .当使用时,会出现以下三种情况的中文乱码: 下面的几个文件都在git安装目录下文件夹etc内.1.ls不能显示中文目录 解决办法:在git/g ...
- java 泛型详解(普通泛型、 通配符、 泛型接口)
java 泛型详解(普通泛型. 通配符. 泛型接口) JDK1.5 令我们期待很久,可是当他发布的时候却更换版本号为5.0.这说明Java已经有大幅度的变化.本文将讲解JDK5.0支持的新功能---- ...
- POJ 1287:Networking(最小生成树Kruskal)
id=1287">Networking Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5976 Acce ...
- Swift语言Storyboard教程:第一部分
更新记录: 该Storyboard教程由Caroline Begbie更新iOS 8和Swift相关内容.原文作者为教程编纂组的成员Matthijs Hollemans. 2014/12/10更新: ...