HDU 4864 Task

题目链接

题意:有一些机器和一些任务。都有时间和等级,机器能做任务的条件为时间等级都大于等于任务。而且一个任务仅仅能被一个机器做。如今求最大能完毕任务。而且保证金钱尽量多

思路:贪心,对于每一个任务。时间大的优先去匹配,时间同样的。等级大的优先去匹配,由于时间占得多,时间多1就多500,而等级最多才差200。然后匹配的时候,尽量使用等级小的去匹配,而时间仅仅要大于它的都能够用。由于是按时间优先。所以假设该时间能匹配大的,其它肯定也能匹配,那么肯定优先匹配大的,所以仅仅要在等级上尽量小就能够了

代码:

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std; typedef __int64 ll;
const int N = 1444;
const int M = 105;
int n, m;
ll mac[N][M], task[N][M], used[N]; int main() {
while (~scanf("%d%d", &n, &m)) {
int x, y;
memset(mac, 0, sizeof(mac));
memset(task, 0, sizeof(task));
memset(used, 0, sizeof(used));
for (int i = 0; i < n; i++) {
scanf("%d%d", &x, &y);
mac[x][y]++;
}
for (int i = 0; i < m; i++) {
scanf("%d%d", &x, &y);
task[x][y]++;
}
for (int i = 0; i <= 100; i++) {
for (int j = 1439; j > 0; j--) {
mac[j][i] += mac[j + 1][i];
}
}
ll num = 0;
ll ans = 0;
for (ll i = 1439; i > 0; i--) {
for (ll j = 100; j >= 0; j--) {
if (!task[i][j]) continue;
for (ll k = j; k <= 100; k++) {
if (task[i][j] > mac[i][k] - used[k]) {
num += mac[i][k] - used[k];
ans += (mac[i][k] - used[k]) * (i * 500 + j * 2);
task[i][j] -= (mac[i][k] - used[k]);
used[k] = mac[i][k];
}
else {
num += task[i][j];
ans += task[i][j] * (i * 500 + j * 2);
used[k] += task[i][j];
task[i][j] = 0;
break;
}
}
}
}
printf("%I64d %I64d\n", num, ans);
}
return 0;
}

HDU 4864 Task(贪心)的更多相关文章

  1. Hdu 4864(Task 贪心)(Java实现)

    Hdu 4864(Task 贪心) 原题链接 题意:给定n台机器和m个任务,任务和机器都有工作时间值和工作等级值,一个机器只能执行一个任务,且执行任务的条件位机器的两个值都大于等于任务的值,每完成一个 ...

  2. HDU 4864 Task (贪心+STL多集(二分)+邻接表存储)(杭电多校训练赛第一场1004)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4864 解题报告:有n台机器用来完成m个任务,每个任务有一个难度值和一个需要完成的时间,每台机器有一个可 ...

  3. 2014多校第一场D题 || HDU 4864 Task (贪心)

    题目链接 题意 : 用N台机器,M个任务,每台机器都有一个最大工作时间和等级,每个任务有一个需要工作时间和一个等级.如果机器完成一个任务要求是:机器的工作时间要大于等于任务的时间,机器的等级要大于等于 ...

  4. hdu 4864 Task (贪心 技巧)

    题目链接 一道很有技巧的贪心题目. 题意:有n个机器,m个任务.每个机器至多能完成一个任务.对于每个机器,有一个最大运行时间xi和等级yi, 对于每个任务,也有一个运行时间xj和等级yj.只有当xi& ...

  5. HDU 4864 Task(经典贪心)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=4864 Task Time Limit: 4000/2000 MS (Java/Others)    M ...

  6. hdu 4864 Task

    题目链接:hdu 4864 其实就是个贪心,只是当初我想的有偏差,贪心的思路不对,应该是这样子的: 因为 xi 的权值更重,所以优先按照 x 来排序,而这样的排序方式决定了在满足任务(即 xi > ...

  7. hdu 4864 Task(贪婪啊)

    主题链接:pid=4864">http://acm.hdu.edu.cn/showproblem.php?pid=4864 Task Time Limit: 4000/2000 MS ...

  8. hdu 4864 Task(贪心)

    pid=4864">http://acm.hdu.edu.cn/showproblem.php?pid=4864 大致题意:有n台机器和m个任务,都有两个參数工作时间time和难度le ...

  9. HDU 4864 Task (贪心)

    Task 题目链接: http://acm.hust.edu.cn/vjudge/contest/121336#problem/B Description Today the company has ...

随机推荐

  1. PyQt5调入数据库数据在表格中显示

    数据库为Postgresql import sys from form import Ui_Form from PyQt5.Qt import QWidget, QApplication,QTable ...

  2. centos7+python3.6+nginx+uwsgi+django2的搭建笔记

    公司需上线一套python编写的代码,需要给搭建一套环境  ,本次采用centos7+python3.6+nginx+uwsgi2+django2+mysql5.7的方式来进行搭建 写在部署前 在线上 ...

  3. xmanager

    [root@upright91 run]# ./runBenchmark.sh updbtpcc.properties sqlTableCreates Exception in thread &quo ...

  4. 《Android源码设计模式》--装饰模式

    No1: Activity继承于ContextThemeWrapper,继承于ContextWrapper,继承于Context. No2: Context中方法的所有实现均由ContextImpl类 ...

  5. ajax异步请求模式

    什么是异步请求 我们知道,在同步请求模型中,浏览器是直接向服务器发送请求,并直接接收.处理服务器响应的数据的.这就导致了浏览器发送完一个请求后,就只能干等着服务器那边处理请求,响应请求,在这期间其它事 ...

  6. iOS 11开发教程(七)编写第一个iOS11代码Hello,World

    iOS 11开发教程(七)编写第一个iOS11代码Hello,World 代码就是用来实现某一特定的功能,而用计算机语言编写的命令序列的集合.现在就来通过代码在文本框中实现显示“Hello,World ...

  7. python列表中中文编码的问题

    在python2列表中,有时候,想打印一个列表,会出现如下显示: 这个是由于: print一个对象,是输出其“为了给人(最终用户)阅读”而设计的输出形式,那么字符串中的转义字符需要转出来,而且 也不要 ...

  8. php常见网络攻击及防御方法

    常见的Web攻击分为两类:一是利用Web服务器的漏洞进行攻击,如CGI缓冲区溢出,目录遍历漏洞利用等攻击;二是利用网页自身的安全漏洞进行攻击,如SQL注入,跨站脚本攻击等.下面这篇文章主要介绍了PHP ...

  9. CXF发布webservice

    http://wenku.baidu.com/link?url=dTJpXcL0TXslGAYYC6SSOrPGvjyEb974ZGx9-0dymU32YDjxuP8DwlI1sFpPCGqu_ywW ...

  10. bzoj4399 魔法少女LJJ 线段树合并

    只看题面绝对做不出系列.... 注意到\(c \leqslant 7\),因此不会有删边操作(那样例删边干嘛) 注意到\(2, 5\)操作十分的有趣,启示我们拿线段树合并来做 操作\(7\)很好处理 ...