题目链接: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(馋)的更多相关文章

  1. HDU 4869 (递推 组合数取模)

    Problem Turn the pokers (HDU 4869) 题目大意 有m张牌,全为正面朝上.进行n次操作,每次可以将任意ai张反面,询问n次操作可能的状态数. 解题分析 记正面朝上为1,朝 ...

  2. HDU 4869 Turn the pokers(推理)

    HDU 4869 Turn the pokers 题目链接 题意:给定n个翻转扑克方式,每次方式相应能够选择当中xi张进行翻转.一共同拥有m张牌.问最后翻转之后的情况数 思路:对于每一些翻转,假设能确 ...

  3. HDU 4864 Task(贪心)

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

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

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

  5. hdu 4864 Task (馋)

    # include <stdio.h> # include <algorithm> # include <string.h> using namespace std ...

  6. hdu 4864 Task(贪婪啊)

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

  7. HDU 3572 Task Schedule(拆点+最大流dinic)

    Task Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

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

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

  9. hdu 4864 Task

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

随机推荐

  1. JAVA学习 分析Servlet

    一个.什么是Servlet Servlet是一种在server端执行的java编写的程序,是依照Servlet规范编写的一个java类. 二.Servlet的工作过程 如图所看到的:为了实现客户与se ...

  2. 第一章 工欲善其事 其利润—Android SDK工具(2)

    1.2设备管理工具-调试桥(ADB) 1.2.1ADB简单介绍 ADB全称是Android Debug Bridge,是Android SDK里自带的一个工具,用这个工具能够直接操作管理Android ...

  3. CVE-2014-4113:飓风熊猫(HURRICANE PANDA)Win64bit提起权0day破绽

    飓风熊猫被觉得是原产于中国.主要针对基础设施公司的先进攻击者.我们知道它们除了拥有0day漏洞外.还有其它的三种本地特权提升漏洞.我们知道飓风熊猫使用的是"ChinaChopper" ...

  4. HDOJ 4974 A simple water problem

    A simple water problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/O ...

  5. Code digest

    private void travelDir(String filepath) { String threadName = Thread.currentThread().toString(); log ...

  6. 大话设计模式C++实现-文章7章-代理模式

    一个.UML画画 二.概念 代理模式:为其它对象提供一种代理以控制对这个对象的訪问. 三.应用场景 (1)远程代理.也就是为一个对象在不同的地址空间提供局部代表.这样能够隐藏一个对象存在于不同地址空间 ...

  7. OC省字典的数组摘要集

    开放式党员 NSString *filePath = @"/Users/dlios/Downloads/area.txt"; 推断错误值 打印出来 NSError *error = ...

  8. Online网站集

    http://tool.oschina.net/apidocs/    在线工具(IT技术工具)

  9. 3D数学学习笔记——笛卡尔坐标系

    本系列文章由birdlove1987编写.转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24601215 1.3D数学 ...

  10. Java工程(3)——但从谈论用户的角度UI图案

    前言: 海南项目宣告竣工,验收之日,除部分代码有待优化外,亟待改进的就是界面. 米老师说:连你都忍不住去拖下滚动栏,你还指望用户用的舒坦吗? 顿悟: 业务.功能也许是软件的核心,技术也许是软件的精髓. ...