• UVA 1153 KEEP THE CUSTOMER SATISFIED


    题意:

      钢铁公司有N个客户的订单,每个订单有一个产量q(生产时间刚好也等于q)和订单完成截止时间。公司要求完成尽量多的订单。

    分析:

      先按截止时间d排序,然后维护一个已经选好的订单的优先队列,如果当前无法选择的话,那么尝试和之前花费时间最长的交换。如果qi<qj的话,交换之后花费的时间更短且截止时间di更长。

    代码:

      

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<queue>
    using namespace std;
    const int MAXN=800005;
    struct NODE
    {
    int q;
    int d;
    };
    NODE a[MAXN];
    int n;
    bool cmp(NODE a,NODE b)
    {
    return a.d<b.d;
    }
    int main()
    {
    int i,ans;
    int T;
    scanf("%d",&T);
    while(T--)
    {
    scanf("%d",&n);
    for(i=0; i<n; i++)
    scanf("%d%d",&a[i].q,&a[i].d);
    sort(a,a+n,cmp);
    priority_queue<int>q;
    while(!q.empty())
    q.pop();
    ans=0;
    for(i=0;i<n;i++)
    {
    if(a[i].q+ans>a[i].d)
    {
    if(!q.empty())
    {
    if((q.top()>a[i].q)&&((ans+a[i].q-q.top())<=a[i].d))
    {
    ans-=q.top();
    q.pop();
    q.push(a[i].q);
    ans+=a[i].q;
    }
    }
    }
    else
    {
    q.push(a[i].q);
    ans+=a[i].q;
    }
    }
    printf("%d ",q.size());
    if(T)
    printf(" ");
    }
    return 0;
    }
  • 相关阅读:
    params可变参数
    using释放资源
    第二章:深入C#数据类型
    体检套餐项目解析
    堆栈
    C#必看:《第17章节QQ管理系统》
    C#必看:《第15章节学生管理系统》
    ACM hdu 1008 Elavator
    jq尺寸和位置总结篇(width scrollTop position offset)
    find children slice
  • 原文地址:https://www.cnblogs.com/137033036-wjl/p/4928519.html
Copyright © 2020-2023  润新知