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/ ...
随机推荐
- 最新的QT git代码到code.qt.io/cgit,还有planet.qt.io有许多博客
http://code.qt.io/cgit/ http://planet.qt.io/
- 微信平台接入Web页面功能接口(C#)
微信平台接入web页面功能接口 今年因工作需要,通过微信平台接入公司的Wap页面,回忆下,记录内容,方面以后使用. 1.成为开发者后,你才可以使用公众平台的开发功能.需要填写URL和ToKen,接口配 ...
- 当webview遇到了Slidingmenu,webView出现卡白,解决方案
先介绍一下什么是SlidingMenu: Sliding Menu的是一种比较新的设置界面或配置界面效果,在主界面左滑或者右滑出现设置界面,能方便的进行各种操作.如Evernote.Google+.F ...
- E. Riding in a Lift(Codeforces Round #274)
E. Riding in a Lift time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- C#验证码的另一种操作方法
sb = new StringBuilder(); char c = '0'; string s = ""; for (int i = 0; i < 4; i++) { Ra ...
- Aizu 1335 Eequal sum sets
Let us consider sets of positive integers less than or equal to n. Note that all elements of a set a ...
- 使用ant的war任务打包j2ee web项目
<?xml version="1.0" encoding="UTF-8"?> <project name="antwebprojec ...
- 四、Nginx负载均衡upstream
user www; worker_processes ; error_log /usr/local/nginx/logs/error.log crit; pid /usr/local/nginx/lo ...
- Android移动view动画问题
http://www.cnblogs.com/eoiioe/archive/2012/08/29/2662546.html Android写动画效果不是一般的麻烦,网上找了好久,终于解决了动画的问题, ...
- cocos2d-x游戏开发系列教程-坦克大战游戏之子弹和地图碰撞
上篇文章实现了坦克与地图碰撞的检测, 这篇我们继续完成子弹和地图的碰撞检测. 1.先设计一个子弹类Bullet,如下所示: class Bullet : public CCSprite { publi ...