题意翻译

farmer john有N(1≤N≤100,000)头牛,他想赚跟多的钱,所以他准备买牛奶和出租牛。有M(1≤M≤100,000 )家商店想买牛奶,每家商店的进货价不同。有R(1≤R≤100,000 )户邻居想租牛,每户人家的租价不同。 问他最多能赚多少钱。

输入:输入的第1行包含n,m,r三个整数。紧接着的n行每一行有1个整数Ci (1≤Ci≤1,000,000),表示第i头牛产出Ci加仑奶。再下面的m行每行有两个整数Qi与Pi (1≤Qi,Pi≤1,000,000),表示第i个商店最多以Pi美分每加仑的价格购买Qi加仑牛奶。FJ可销售0~Qi加仑牛奶到一个商店。然后的r行每行有一个整数Ri,表示FJ的第i个邻居想以Ri(1≤Ri≤1,000,000 ), 的价格租一头牛。

输出:仅一行。表示一天最多获得多少钱。

注意:int类型不够大!!!

说明: FJ 需要挤一号和四号奶牛的奶,共可得牛奶13加仑。他可以先买给出价最高的10加仑,赚250美分,然后把剩下的按每加仑15美分去卖,共有295美分的利润。 然后,他要把其他三头以250,80,和100美分的价格分别卖出,赚430美分。所以他一共可得725美分/日的利润。

---by 风格雨关、WuYongxuan、毕沁露

题目描述

Farmer John realizes that the income he receives from milk production is insufficient to fund the growth of his farm, so to earn some extra money, he launches a cow-rental service, which he calls "USACOW" (pronounced "Use-a-cow").

Farmer John has NN cows (1 \leq N \leq 100,0001≤N≤100,000), each capable of producing some amount of milk every day. The MMstores near FJ's farm (1 \leq M \leq 100,0001≤M≤100,000) each offer to buy a certain amount of milk at a certain price. Moreover, Farmer John's RR (1 \leq R \leq 100,0001≤R≤100,000) neighboring farmers are each interested in renting a cow at a certain price.

Farmer John has to choose whether each cow should be milked or rented to a nearby farmer. Help him find the maximum amount of money he can make per day.

输入输出格式

输入格式:

The first line in the input contains NN, MM, and RR. The next NN lines each contain an integer c_ici​ (1 \leq c_i \leq 1,000,0001≤ci​≤1,000,000), indicating that Farmer John's iith cow can produce c_ici​ gallons of milk every day. The next MMlines each contain two integers q_iqi​ and p_ipi​ (1 \leq q_i, p_i \leq 1,000,0001≤qi​,pi​≤1,000,000), indicating that the iith store is willing to buy up to q_iqi​ gallons of milk for p_ipi​ cents per gallon. Keep in mind that Farmer John can sell any amount of milk between zero and q_iqi​ gallons to a given store. The next RR lines each contain an integer r_iri​ (1 \leq r_i \leq 1,000,0001≤ri​≤1,000,000), indicating that one of Farmer John's neighbors wants to rent a cow for r_iri​ cents per day.

输出格式:

The output should consist of one line containing the maximum profit Farmer John can make per day by milking or renting out each of his cows. Note that the output might be too large to fit into a standard 32-bit integer, so you may need to use a larger integer type like a "long long" in C/C++.

输入输出样例

输入样例#1: 复制

5 3 4
6
2
4
7
1
10 25
2 10
15 15
250
80
100
40
输出样例#1: 复制

725

说明

Farmer John should milk cows #1 and #4, to produce 13 gallons of milk. He should completely fill the order for 10 gallons, earning 250 cents, and sell the remaining three gallons at 15 cents each, for a total of 295 cents of milk profits.

Then, he should rent out the other three cows for 250, 80, and 100 cents, to earn 430 more cents. (He should leave the request for a 40-cent rental unfilled.) This is a total of 725 cents of daily profit.

#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef pair<int, int>P;
typedef long long ll;
const int MAXN=1e5+;
P shop;
int N,M,R;
int buy[MAXN],cow[MAXN];
priority_queue<P> q;
int main(){
cin>>N>>M>>R;
for(int i=;i<=N;i++) scanf("%d",&cow[i]);
for(int i=;i<=M;i++){
scanf("%d%d",&shop.second,&shop.first);
q.push(shop);
}
for(int i=;i<=R;i++)scanf("%d",&buy[i]);
sort(cow+,cow+N+);
sort(buy+,buy+R+);
int l=,r=N,b=R;
ll ans=,tmp=-;
for(int i=;i<=N;i++){
if(tmp==-)
while(!q.empty()&&cow[r]){
if(tmp==-) tmp=;
if(q.top().second>cow[r]) {
P p=q.top();q.pop();
tmp+=1LL*cow[r]*p.first,
p.second-=cow[r],cow[r]=;
q.push(p);
}
else
tmp+= 1LL*q.top().first*q.top().second,
cow[r]-=q.top().second, q.pop();
}
if(tmp!=-&&tmp>=buy[b])
ans+=tmp,tmp=-,--r;
else if(b!=) ans+=buy[b--],++l;
}
cout<<ans<<endl;
return ;
}

洛谷 P4181 [USACO18JAN]Rental Service的更多相关文章

  1. [洛谷P4183][USACO18JAN]Cow at Large P

    题目链接 Bzoj崩了之后在洛谷偶然找到的点分好题! 在暴力的角度来说,如果我们$O(n)$枚举根节点,有没有办法在$O(n)$的时间内找到答案呢? 此时如果用树形$dp$的想法,发现是可做的,因为可 ...

  2. 洛谷 P4183 - [USACO18JAN]Cow at Large P(点分治)

    洛谷题面传送门 点分治 hot tea. 首先考虑什么样的点能够对以 \(u\) 为根的答案产生 \(1\) 的贡献.我们考虑以 \(u\) 为根对整棵树进行一遍 DFS.那么对于一个点 \(v\), ...

  3. luogu4181 [USACO18JAN]Rental Service (贪心)

    我们要出租的话,一定是出租产奶量最少的牛 那我们就看出租多少头牛(其他的卖奶)的时候答案最大就可以了. (注意N有可能小于R) #include<bits/stdc++.h> #defin ...

  4. 2018.10.25 洛谷P4187 [USACO18JAN]Stamp Painting(计数dp)

    传送门 其实本来想做组合数学的2333. 谁知道是道dpdpdp. 唉只能顺手做了 还是用真难则反的思想. 这题我们倒着考虑,只需要求出不合法方案数就行了. 这个显然是随便dpdpdp的. f[i]f ...

  5. [洛谷P4185] [USACO18JAN]MooTube

    题目链接: 传送门 题意: 给定一颗N个节点的树,定义两点距离为他们之间路径中边权最小值. Q次询问K,V,询问到V距离>=K的点有多少(不含V) 呃呃呃呃考试的时候直奔了T3,结果公式推挂了( ...

  6. 洛谷AT2342 Train Service Planning(思维,动态规划,珂朵莉树)

    洛谷题目传送门 神仙思维题还是要写点东西才好. 建立数学模型 这种很抽象的东西没有式子描述一下显然是下不了手的. 因为任何位置都以\(k\)为周期,所以我们只用关心一个周期,也就是以下数都在膜\(k\ ...

  7. 洛谷 1938 [USACO09NOV]找工就业Job Hunt

    洛谷 1938  [USACO09NOV]找工就业Job Hunt 题目描述 Bessie is running out of money and is searching for jobs. Far ...

  8. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  9. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

随机推荐

  1. Android 使用EventBus进行Fragment和Activity通信

    本文介绍EventBus的基本使用,以及用于Fragment和Activity之间通信. github地址: https://github.com/greenrobot/EventBus 版本是 Ev ...

  2. spring中for循环中事务

    1.需求:批量插入一批数据,不用spring jdbc的批处理,用for循环插入数据. 2.遇到的问题:在for循环中,当一个插入不成功,前面插入成功的数据也将回滚. 3.初始设计:在service中 ...

  3. SQL SERVER的数据类型

    1.SQL SERVER的数据类型 数据类弄是数据的一种属性,表示数据所表示信息的类型.任何一种计算机语言都定义了自己的数据类型.当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或 ...

  4. Java MVC框架性能比较

    Java MVC框架性能比较 - by zvane 现在各种MVC框架很多,各框架的优缺点网络上也有很多的参考文章,但介绍各框架性能方面差别的文章却不多,本人在项目开发中,感觉到采用了struts2框 ...

  5. Farseer.net轻量级ORM开源框架 V1.5版本升级消息

    SHA-1: 0ede88104f269f108b68be1e87ffcead4a354ec6 * 提交V1.5版本1.新增:整表缓存的实现方式(提取接口,可由客户端算定义实现)2.新增:SQL配置化 ...

  6. 什么是LambdaExpression,如何转换成Func或Action(2)

    序言 在上一篇中,我们认识了什么是表达式树.什么是委托,以及它们的关系.可能是我功力不好,貌似大家都不怎么关注,没有讲解出不同角度的问题. 学习一种新技术,是枯燥的过程,只有在你掌握后并能运用时才能从 ...

  7. docker 容器挂载主机目录,访问出现 cannot open directory /mnt/home/webroot/: Permission denied 的解决办法

    问题原因及解决办法 原因是CentOS7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题: 1.在运行容器的时候,给容器加特权,及加上 --privileged= ...

  8. 小写bool和大写BOOL的区别

    转:https://blog.csdn.net/ji0525084/article/details/8594469 bool是标准C++中的布尔量,占一个字节大小内存,只有false或者true.具有 ...

  9. 08C#事件

    C#事件 1.2      事件 事件是C#语言内置的语法,可以定义和处理事件,为使用组件编程提供了良好的基础. 1.16.1       事件驱动 Windows操作系统把用户的动作都看作消息,C# ...

  10. 指定PING的网卡

    struct ifreq ifr; // 绑定在eth0上 memset( &ifr, , sizeof( struct ifreq ) ); snprintf( ifr.ifr_name, ...