• HDU-4864-Task


    链接:https://vjudge.net/problem/HDU-4864

    题意:

    给n个机器,m个任务。每个机器有运行时间和等级,每个任务执行时间和等级。

    每个机器每天只能用一次,同时运行时间不能超过给定值。

    能执行的任务的等级不能高于机器的等级。

    执行一个任务能得到500*x + 2 * y的钱,求最多能得到多少钱。

    思路:

    贪心,按照先x后y的降序排列。

    从大到小选择事件够的机器记录,

    再每次从y往最大100来找第一个满足的机器执行某个任务。

    代码:

    #include <iostream>
    #include <memory.h>
    #include <vector>
    #include <map>
    #include <algorithm>
    #include <cstdio>
    #include <math.h>
    #include <queue>
    #include <string>
    #include <stack>
    
    using namespace std;
    
    typedef long long LL;
    
    const int MAXN = 1e5 + 10;
    
    struct Node
    {
        int _x;
        int _y;
        bool operator < (const Node & that) const
        {
            return this->_x > that._x||(this->_x == that._x && this->_y > that._y);
        }
    }machine[MAXN], task[MAXN];
    int level[200];
    
    int main()
    {
        int n, m;
        while (~scanf("%d%d", &n, &m))
        {
            memset(level, 0, sizeof(level));
            for (int i = 1;i <= n;i++)
                scanf("%d%d", &machine[i]._x, &machine[i]._y);
            for (int i = 1;i <= m;i++)
                scanf("%d%d", &task[i]._x, &task[i]._y);
            sort(machine + 1, machine + 1 + n);
            sort(task + 1, task + 1 + m);
            LL res = 0;
            int cnt = 0;
            for (int i = 1,j = 1;i <= m;i++)
            {
                while (j <= n && machine[j]._x >= task[i]._x)
                {
                    level[machine[j]._y]++;
                    j++;
                }
                for (int k = task[i]._y;k <= 100;k++)
                {
                    if (level[k] != 0)
                    {
                        cnt++;
                        res += 500 * task[i]._x + 2 * task[i]._y;
                        level[k]--;
                        break;
                    }
                }
            }
            printf("%d %lld
    ", cnt, res);
        }
    
        return 0;
    }
    

      

  • 相关阅读:
    TransportClient基于Elasticsearch6.8.6 X-PACK
    elasticsearch6.8.6配置xpack(生成密钥)
    Java8 List排序
    ssh 免密码登录自动设置脚本
    Linux grep命令用于查找文件里符合条件的字符串
    [译]如何防止elasticsearch的脑裂问题
    APScheduler定时任务使用
    storm本地python开发环境搭建
    关于python反射的getattr,我终于想通了!
    利用sqlalchemy 查询视图
  • 原文地址:https://www.cnblogs.com/YDDDD/p/10626580.html
Copyright © 2020-2023  润新知