zoukankan      html  css  js  c++  java
  • 优先队列——[Usaco2009 Open]工作安排Job

    先排序
    4
    2 10
    2 11
    3 20
    3 21

    在用优先队列,按价值小的优先,day<=s[i].d入队,
    队列的容量要<=day,如>day,出队

    View Code
    #include<stdio.h>
    #include<algorithm>
    #include<iostream>
    #include<queue>
    using namespace std;

    struct data
    {
    long long d;
    long long p;
    }s[100009];

    struct data1
    {
    long long d;
    long long p;
    data1(data a)
    {
    d=a.d;
    p=a.p;
    }
    friend bool operator<(data1 a,data1 b)
    {
    return a.p>b.p;//内部按val从小到大
    }

    };

    int cmp(data a,data b)
    {
    if(a.d==b.d)
    return a.p>b.p;
    else
    return a.d<b.d;
    }

    int main()
    {
    int n;
    while(scanf("%d",&n)!=EOF)
    {
    int i,max=0;
    for(i=1;i<=n;i++)
    {
    scanf("%lld%lld",&s[i].d,&s[i].p);
    if(max<s[i].d)max=s[i].d;
    }

    sort(&s[1],&s[n+1],cmp);
    priority_queue<data1> qq;

    int day=1;i=1;
    while(day<=max)
    {
    for(i;i<=n;i++)
    {
    if(s[i].d<=day)
    {
    qq.push(s[i]);
    }
    else
    break;
    }
    while(qq.size()>day)
    qq.pop();

    day++;
    }

    long long all=0;
    while(!qq.empty())
    {
    all+=qq.top().p;
    qq.pop();
    }
    printf("%lld\n",all);
    }

    return 0;
    }



  • 相关阅读:
    Hadoop压缩
    Hive数据倾斜总结
    DQL、DML、DDL、DCL
    HashMap/HashSet,hashCode,哈希表
    HashMap详解
    Hive分区和桶
    String不可变StringBuffer可变
    Java线程和守护进程
    Ambari安装小记
    P3
  • 原文地址:https://www.cnblogs.com/huhuuu/p/2338215.html
Copyright © 2011-2022 走看看