zoukankan      html  css  js  c++  java
  • bzoj1572 [Usaco2009 Open]工作安排Job

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1572

    【题解】

    这么傻逼的题会想错啊。。。

    想到用优先队列维护了但是维护的方向想错了。

    按时间排序

    用优先队列维护当前p最大的当前时间个。

    然后加入 如果不满就加,否则选一个扔掉。最后统计队列中的即可。

    # include <queue>
    # include <stdio.h>
    # include <string.h>
    # include <iostream>
    # include <algorithm>
    // # include <bits/stdc++.h>
    
    using namespace std;
    
    typedef long long ll;
    typedef long double ld;
    typedef unsigned long long ull;
    const int M = 5e5 + 10;
    const int mod = 1e9+7;
    
    # define RG register
    # define ST static
    
    int n;
    struct pa {
        int d, p;
        pa () {}
        pa (int d, int p) : d(d), p(p) {}
        friend bool operator < (pa a, pa b) {
            return a.p > b.p || (a.p == b.p && a.d < b.d);
        }
    }p[M];
    
    priority_queue<pa> q;
    
    inline bool cmp(pa a, pa b) {
        return a.d < b.d;
    }
    
    
    int main() {
        cin >> n;
        for (int i=1; i<=n; ++i) scanf("%d%d", &p[i].d, &p[i].p);
        sort(p+1, p+n+1, cmp);
        for (int i=1; i<=n; ++i) {
            if(q.size() < p[i].d) q.push(p[i]);
            else if(p[i].p > q.top().p) {
                q.pop();
                q.push(p[i]);
            }
        }
        ll ans = 0;
        while(!q.empty()) {
            ans += q.top().p;
            q.pop();
        }
        cout << ans << endl;
        return 0;
    }
    View Code
  • 相关阅读:
    响应式面包屑菜单
    自定义美化UL OL发光列表
    3D立方体图片切换动画
    超酷Loading进度条
    比特币网络的弱点(二)
    比特币网络的弱点
    C++的价值
    《老罗的Android之旅》导读PPT
    系统的思考性能问题
    no_expand优化案例
  • 原文地址:https://www.cnblogs.com/galaxies/p/bzoj1572.html
Copyright © 2011-2022 走看看