hdu 4869 Task(馋)
题目大意:有n台机器,m个任务。每一个机器和任务都有有xi和yi。要求机器的xi。yi均大于等于任务的xi和yi才干运行任务。
每台机器一天仅仅能运行一个任务。要求完毕的任务数尽量多,而且说金额尽量大。
完毕每一个任务的金额为xi∗500+yi∗2
解题思路:贪心,mach[i][j]表示等级为i,时间为j的机器数量,task[i][j]表示等级为i,时间为j的机器数量。
每次优先降低i,由于相应等级降低100,相应的金额代价也不会降低超过500(即时间降低1)。
每次mach[i][j]要加上mach[i][j+1],即上面没有被使用的机器。tmp记录当前j下,等级大于i的机器个数。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef __int64 ll;
const int maxt = 1440;
const int maxd = 100;
int N, M;
int mach[maxd+10][maxt+10], task[maxd+10][maxt+10];
void init () {
int a, b;
memset(mach, 0, sizeof(mach));
memset(task, 0, sizeof(task));
for (int i = 0; i < N; i++) {
scanf("%d%d", &a, &b);
mach[b][a]++;
}
/*
for (int i = maxd; i >= 0; i--)
for (int j = maxt; j >= 0; j--)
mach[i][j] = mach[i][j] + mach[i+1][j] + mach[i][j+1] - mach[i+1][j+1];
*/
for (int i = 0; i < M; i++) {
scanf("%d%d", &a, &b);
task[b][a]++;
}
}
void solve () {
ll ans = 0;
int cnt = 0;
for (int j = maxt; j >= 0; j--) {
int tmp = 0;
for (int i = maxd; i >= 0; i--) {
mach[i][j] += mach[i][j+1];
tmp += mach[i][j];
int k = min(tmp, task[i][j]);
ans += (ll)k * (2LL * i + 500LL * j);
tmp -= k;
cnt += k;
for (int x = i; x <= maxd; x++) {
int p = min(mach[x][j], k);
k -= p;
mach[x][j] -= p;
if (k == 0)
break;
}
}
}
printf("%d %I64d\n", cnt, ans);
}
int main () {
while (scanf("%d%d", &N, &M) == 2 && N + M) {
init();
solve();
}
return 0;
}
版权声明:本文博主原创文章,博客,未经同意不得转载。
hdu 4869 Task(馋)的更多相关文章
- HDU 4869 (递推 组合数取模)
Problem Turn the pokers (HDU 4869) 题目大意 有m张牌,全为正面朝上.进行n次操作,每次可以将任意ai张反面,询问n次操作可能的状态数. 解题分析 记正面朝上为1,朝 ...
- HDU 4869 Turn the pokers(推理)
HDU 4869 Turn the pokers 题目链接 题意:给定n个翻转扑克方式,每次方式相应能够选择当中xi张进行翻转.一共同拥有m张牌.问最后翻转之后的情况数 思路:对于每一些翻转,假设能确 ...
- HDU 4864 Task(贪心)
HDU 4864 Task 题目链接 题意:有一些机器和一些任务.都有时间和等级,机器能做任务的条件为时间等级都大于等于任务.而且一个任务仅仅能被一个机器做.如今求最大能完毕任务.而且保证金钱尽量多 ...
- Hdu 4864(Task 贪心)(Java实现)
Hdu 4864(Task 贪心) 原题链接 题意:给定n台机器和m个任务,任务和机器都有工作时间值和工作等级值,一个机器只能执行一个任务,且执行任务的条件位机器的两个值都大于等于任务的值,每完成一个 ...
- hdu 4864 Task (馋)
# include <stdio.h> # include <algorithm> # include <string.h> using namespace std ...
- hdu 4864 Task(贪婪啊)
主题链接:pid=4864">http://acm.hdu.edu.cn/showproblem.php?pid=4864 Task Time Limit: 4000/2000 MS ...
- HDU 3572 Task Schedule(拆点+最大流dinic)
Task Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- HDU 4864 Task (贪心+STL多集(二分)+邻接表存储)(杭电多校训练赛第一场1004)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4864 解题报告:有n台机器用来完成m个任务,每个任务有一个难度值和一个需要完成的时间,每台机器有一个可 ...
- hdu 4864 Task
题目链接:hdu 4864 其实就是个贪心,只是当初我想的有偏差,贪心的思路不对,应该是这样子的: 因为 xi 的权值更重,所以优先按照 x 来排序,而这样的排序方式决定了在满足任务(即 xi > ...
随机推荐
- VS2015 C#6.0
VS2015 C#6.0 中的那些新特性 VS2015在自己机器上确实是装好了,(全部安装的话,在Java SE 开发工具包 会卡顿很长时间,我直接关闭,然后重启电脑,重新修复安装搞定), 想来体验一 ...
- 古老server源代码迁移到新server
因为老vsts资源server不久,准备存档,现在在旧的需要server该代码仍然在使用的所有迁移到新的vstsserver在. 因此,我们需要迁移所有需要也许是习惯了新的代码vsts在之上.代码的迁 ...
- Install Orace 11g on Solaris 10 Sparc 64 bit
昨天有一个客户端安装11g数据库.整个安装过程和一些遇到的问题是一个创纪录.共享. 由于客户不能使用自己的机器远程连接到server,意通过U盘.移动硬盘等拷贝不论什么文件.因此一些记录内容无法做到非 ...
- Java学习路径:不走弯路,这是一条捷径
1.如何学习编程? JAVA是一种平台.也是一种程序设计语言,怎样学好程序设计不只适用于JAVA,对C++等其它程序设计语言也一样管用.有编程高手觉得,JAVA也好C也好没什么分别,拿来就用.为什么他 ...
- Team Foundation Server 2015使用教程--读取器tfs组的checkin权限修改
- IOS总结_IOS经常使用的方法集合、调用系统电话、设备区分、APP内永不锁屏
调用系统打电话的功能 打电话功能仅仅有iPhone支持,对于其它设备相应button应该禁用. //直接调用系统电话呼叫功能,挂断电话后不能回到应用程序 [UIApplication sharedAp ...
- 如何设置eclipse在默认模式下打开文件
如何设置eclipse在默认模式下打开文件 打开eclipse.选择例如以下:windows --> preferences --> General --> Editors --&g ...
- ABP项目中的使用AutoMapper
AutoMapper之ABP项目中的使用 最近在研究ABP项目,昨天写了Castle Windsor常用介绍以及其在ABP项目的应用介绍 欢迎各位拍砖,有关ABP的介绍请看阳光铭睿 博客 AutoMa ...
- 新秀学习SSH(十四)——Spring集装箱AOP其原理——动态代理
之前写了一篇文章IOC该博客--<Spring容器IOC解析及简单实现>,今天再来聊聊AOP.大家都知道Spring的两大特性是IOC和AOP. IOC负责将对象动态的注入到容器,从而达到 ...
- android怎么在launcher改动内置apk的icon
找到launcher下的IconCache中加入变量用来存储要改动apk的包名 及要改动成的icon private String[] className = {"com.google.an ...