zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    02Hibernate入门
    01Hibernate概述
    ExtJS布局-Layout
    STARLIMS 安装升级解决方案
    Windows Server 2012 安装.Net Framework 3.5
    vim 复制操作
    linux下挂载新硬盘
    转载 更改mysql 数据存储路径
    转载 阿里云centOS防火墙配置
    (转载)java线程
  • 原文地址:https://www.cnblogs.com/137033036-wjl/p/4928519.html
Copyright © 2011-2022 走看看