2014 Multi-University Training Contest 1 — D. Task
题目链接: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相关推荐
- hdu 4925 Apple Tree--2014 Multi-University Training Contest 6
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4925 Apple Tree Time Limit: 2000/1000 MS (Java/Others ...
- Sichuan University Programming Contest 2018 Preliminary
嗯为了防止大家AK,所以这次的A题和K题我们就当做不存在好了! 经历了昨天写了两个多小时的博客没保存的心态炸裂,今天终于下了个Markdown.所以我猜这篇的格式应该会更好看一点! 好吧废话不多说 题 ...
- HDU 6091 - Rikka with Match | 2017 Multi-University Training Contest 5
思路来自 某FXXL 不过复杂度咋算的.. /* HDU 6091 - Rikka with Match [ 树形DP ] | 2017 Multi-University Training Conte ...
- HDU 6051 - If the starlight never fade | 2017 Multi-University Training Contest 2
/* HDU 6051 - If the starlight never fade [ 原根,欧拉函数 ] | 2017 Multi-University Training Contest 2 题意: ...
- HDU 6058 - Kanade's sum | 2017 Multi-University Training Contest 3
/* HDU 6058 - Kanade's sum [ 思维,链表 ] | 2017 Multi-University Training Contest 3 题意:给出排列 a[N],求所有区间的第 ...
- 2017 Multi-University Training Contest - Team 3 Kanade's sum hd6058
地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6058 题目: Kanade's sum Time Limit: 4000/2000 MS (J ...
- 2018 Multi-University Training Contest 3 Problem F. Grab The Tree 【YY+BFS】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6324 Problem F. Grab The Tree Time Limit: 2000/1000 MS ...
- HUST-2015 Multi-University Training Contest 9
2015 Multi-University Training Contest 9 solutions BY xudyh 1001.Expression 记dp_{l,r}dpl,r表示l,rl, ...
- 2018 Multi-University Training Contest 4 Problem E. Matrix from Arrays 【打表+二维前缀和】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6336 Problem E. Matrix from Arrays Time Limit: 4000/20 ...
最新文章
- 9 张图带你深入理解 Docker 架构!
- POC测试——原型验证,降低风险,IT系统销售工作之一
- 慢吞吞的pip切换源
- STL 中的 accumulate(C++)
- 【高德地图开发3】---地图显示
- netcore使用 jenkins + supervisor 实现standalone下多副本自动化发布
- sqllyog可以连接oracle_03-SQLServer中链接服务器用法--连接Oracle
- js为链接绑定点击事件并且附带return false;来阻止跳转
- Oracle Instant Client安装与配置
- windows温度监控效果最棒的软件 | Windows桌面优化、功能增强软件
- 2022中兴捧月算法挑战赛(RAW图像去噪)——初赛到决赛总结与反思
- 历年考研计算机专业英语平均分,历年考研英语平均分及难度分析(截止至2020年)...
- Linux PCI和PCIe总线
- 微生物组-扩增子16S分析和可视化(2023.2)
- ApacheCN 计算机视觉译文集 20210218 更新
- uCOS-II之邮箱
- java反射机制的概念及原理
- python 自动生成数字_python – 使用yaml自动生成配置和具有数字...
- OpenCV——Harris、Shi Tomas、自定义、亚像素角点检测
- QQ浏览器调试解决方案
热门文章
- val_loss突然变很大_有没有那么一瞬间,你突然觉得释然了?
- jpa 动态sql拼接_MyBatis还是JPA?终于有答案了!
- 造轮子是什么意思_聊聊在阿里工作一年的收获,什么是真正的技术能力?
- centos8 安装docker_利用Jenkins和Docker实现小公司的自动部署
- tp5 queue.php,tp5(think-queue)消息队列+supervisor进程管理实现队列常驻进程
- python 二维列表从小到大_给Python开发者准备的110道面试题
- Java案例:读取XML文档
- Java Web实训项目:西蒙购物网(中)
- 2018 CCPC 桂林站小结
- 9.广义霍夫变换——广义霍夫变换算法和识别中的应用、现在的霍夫算法及识别中的应用_2