• luogu4181 [USACO18JAN]Rental Service (贪心)


    我们要出租的话,一定是出租产奶量最少的牛

    那我们就看出租多少头牛(其他的卖奶)的时候答案最大就可以了。

    (注意N有可能小于R)

     1 #include<bits/stdc++.h>
     2 #define ll long long
     3 #define pa pair<int,int>
     4 using namespace std;
     5 const int maxn=100010;
     6 
     7 inline ll rd(){
     8     ll x=0;char c=getchar();
     9     while(c<'0'||c>'9') c=getchar();
    10     while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
    11     return x;
    12 }
    13 
    14 int N,M,R,C[maxn],S[maxn];
    15 pa PQ[maxn];
    16 ll ans,tmp,tmp2;
    17 
    18 inline bool cmp(int a,int b){return a>b;}
    19 inline bool cmp2(pa a,pa b){return a>b;}
    20 
    21 int main(){
    22     int i,j,k;
    23     N=rd(),M=rd(),R=rd();
    24     for(i=1;i<=N;i++) C[i]=rd();
    25     for(i=1;i<=M;i++) PQ[i].second=rd(),PQ[i].first=rd();
    26     for(i=1;i<=R;i++) S[i]=rd();
    27     sort(C+1,C+N+1,cmp);sort(PQ+1,PQ+M+1,cmp2);sort(S+1,S+R+1,cmp);
    28     R=min(N,R);for(i=1;i<=R;i++) tmp2+=S[i];
    29     for(i=0,j=1;i<=N;i++){
    30         for(;j<=M&&PQ[j].second<C[i];j++)
    31             tmp+=1LL*PQ[j].first*PQ[j].second,C[i]-=PQ[j].second;
    32         tmp+=1LL*PQ[j].first*C[i],PQ[j].second-=C[i];
    33         ans=max(ans,tmp+tmp2);tmp2-=S[N-i];
    34     }printf("%lld
    ",ans);
    35 }
  • 相关阅读:
    jQuery检测滚动条(scroll)是否到达底部
    sql group by
    hbm.xml 详解总结
    net.sf.json 时间格式的转化
    经典SQL语句大全
    HashTable
    in与exist , not in与not exist 的区别
    网页布局常用的一些命名规则和书写
    什么是SOA?
    sql之left join、right join、inner join的区别
  • 原文地址:https://www.cnblogs.com/Ressed/p/9661806.html
Copyright © 2020-2023  润新知