The Power Cube is used as a stash of Exotic Power. There are nn cities numbered 1,2,…,n1,2,…,n where allowed to trade it. The trading price of the Power Cube in the ii-th city is aiai dollars per cube. Noswal is a foxy businessman and wants to quietly make a fortune by buying and reselling Power Cubes. To avoid being discovered by the police, Noswal will go to the ii-th city and choose exactly one of the following three options on the ii-th day:

1. spend aiai dollars to buy a Power Cube 
2. resell a Power Cube and get aiai dollars if he has at least one Power Cube 
3. do nothing

Obviously, Noswal can own more than one Power Cubes at the same time. After going to the nn cities, he will go back home and stay away from the cops. He wants to know the maximum profit he can earn. In the meanwhile, to lower the risks, he wants to minimize the times of trading (include buy and sell) to get the maximum profit. Noswal is a foxy and successful businessman so you can assume that he has infinity money at the beginning.

Input

There are multiple test cases. The first line of input contains a positive integer TT (T≤250T≤250), indicating the number of test cases. For each test case: 
The first line has an integer nn. (1≤n≤1051≤n≤105) 
The second line has nn integers a1,a2,…,ana1,a2,…,an where aiai means the trading price (buy or sell) of the Power Cube in the ii-th city. (1≤ai≤1091≤ai≤109) 
It is guaranteed that the sum of all nn is no more than 5×1055×105.

Output

For each case, print one line with two integers —— the maximum profit and the minimum times of trading to get the maximum profit.

Sample Input

3
4
1 2 10 9
5
9 5 9 10 5
2
2 1

Sample Output

16 4
5 2
0 0

Hint

In the first case, he will buy in 1, 2 and resell in 3, 4. profit = - 1 - 2 + 10 + 9 = 16
In the second case, he will buy in 2 and resell in 4. profit = - 5 + 10 = 5
In the third case, he will do nothing and earn nothing. profit = 0

题意:有 n 天,给出每天物品的价格,一个人最初有无限多的钱,每天可以选择买一个物品、卖一个物品或者什么都不做,问这个人的最大收益。

思路:用优先队列维护之前每一天的价格(从小到大),如果队顶的价格 < 当前价格,说明可以在队顶这一天买,当前卖出。然后将一天的价格入队两次,因为当前的收益可能不是最优的,比如1 2 10,将2 push两次,可以计算出2 - 1 = 1和10 - 2 = 8,从而得到最大利润10 - 2 + 2 - 1 = 9。即把第二天的价格当作跳板,卖出再买入,相当于没买。

思路来自https://blog.csdn.net/bpdwn2017/article/details/82119414

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const double eps = 1e-5;
const int N = 1e5 + 10;
int n;
struct node {int a, tp;bool operator < (const node &x) const {if(a != x.a) return a > x.a;else return tp > x.tp;}
};int main() {int t, val;scanf("%d", &t);while(t--) {scanf("%d", &n);ll ans = 0;int cnt = 0;priority_queue<node>q;node tmp;while(!q.empty()) q.pop();for(int i = 1; i <= n; ++i) {scanf("%d", &val);tmp.a = val;tmp.tp = 2;if(!q.empty() && q.top().a < val) {ans += (ll)(val - q.top().a);cnt += q.top().tp;q.pop();q.push(tmp);tmp.tp = 0;q.push(tmp);}else q.push(tmp);}printf("%lld %d\n", ans, cnt);}return 0;
}

HDU - 6438 Buy and Resell (贪心 + 优先队列)相关推荐

  1. HDU 6438 Buy and Resell【贪心】

    http://acm.hdu.edu.cn/showproblem.php?pid=6438 Problem Description The Power Cube is used as a stash ...

  2. HDU - 6438 Buy and Resell(思维+ 贪心)

    题目链接 题意 t组输入,每组n个城市,给出每个城市的货物的价格,在每个城市可以进行三个操作:购买货物,卖出货物,不做操作,问从城市1到城市n(不能返回)最多能获得多少利润,且操作数最少(买和卖分别算 ...

  3. Buy and Resell(贪心好题!)

    这个贪心可以说是很巧妙了. Buy and Resell Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K ( ...

  4. 2017 多校训练第二场 HDU 6047 Maximum Sequence(贪心+优先队列)

    Maximum Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  5. HDU 6438 网络赛 Buy and Resell(贪心 + 优先队列)题解

    思路:维护一个递增队列,如果当天的w比队首大,那么我们给收益增加 w - q.top(),这里的意思可以理解为w对总收益的贡献而不是真正获利的具体数额,这样我们就能求出最大收益.注意一下,如果w对收益 ...

  6. hdu6438 Buy and Resell 买卖物品 ccpc网络赛 贪心

    题目传送门 题目描述: 有n座城市,每座城市都可以对一个物品进行一次的买进或者卖出,可以同时拥有多个物品,计算利润最大值,并且交易次数要最少.(买入卖出算两次操作) 思路: 建立两个小根堆 优先队列, ...

  7. HDU - 6438(贪心+思维)

    链接:HDU - 6438 题意:给出 n ,表示 n 天.给出 n 个数,a[i] 表示第 i 天,物品的价格是多少.每天可以选择买一个物品,或者卖一个已有物品,也可以什么都不做,问最后最大能赚多少 ...

  8. HDU6348 Buy and Resell

    Bryce1010模板 HDU6348 Buy and Resell 题意: 从前往后开始旅游,在每个村庄可以选择三个操作: (1)买入物品 (2)卖出物品 (3)不买不卖 求最后的最大获益. 思路: ...

  9. Buy and Resell

    题目链接: Buy and Resell 大致题意: 有n个城市, 在每个城市中你可以选择花费a[i]的价格买一个能量块, 也可以选择以a[i]的价格卖出一个能量块(前提是你要有能量块可以卖). 你会 ...

  10. HDU 2795 Billboard (线段树+贪心)

    HDU 2795 Billboard (线段树+贪心) 手动博客搬家:本文发表于20170822 21:30:17, 原地址https://blog.csdn.net/suncongbo/articl ...

最新文章

  1. CBV 验证装饰器的使用
  2. 温故而知新:HttpApplication,HttpModule,HttpContext及Asp.Net页生命周期
  3. 如何自行分析定位SAP BSP错误
  4. oracle form中实现隐藏,Oracle Form数据块实现同时只有一个人锁定修改数据
  5. Java如何连接mysql数据库详解(代码)
  6. 打包jar文件后的spring部署及hibernate自动建表经验总结
  7. CentOs基础操作指令(vim、关机)
  8. 学生电子计算机协会,CCF电子科技大学学生分会换届大会成功举行
  9. nodejs如何运行JavaScript代码
  10. 网易云音乐外链(PHP的curl函数)
  11. Decorate 模式
  12. ubuntu安装pr_[原创]Dapr入门教程之二:Dapr的安装
  13. 微信小程序:setData 数据传输长度为 1678 KB,存在有性能问题!
  14. MEM/MBA英语基础(10)非谓语动词
  15. wps交叉表_利用Excel电子表格制作交叉报表
  16. 数据挖掘(二)预测潜在贷款发放客户
  17. Android studio 安装步骤
  18. WiFi共享精灵自身存在的优势
  19. 使用MyBatis实现增删改查遇到的异常解决方法
  20. 计算机与应用文写作关系,经济应用文写作综合题(12春)

热门文章

  1. Python分析中国大陆各直辖市及各省省会的平均工资与平均房价 课程报告+源码及数据
  2. Mac 快速查找快捷键command+f失效解决办法
  3. MATLAB 8.1 R2013a license.lic 问题
  4. can是什么时候处于显性_CAN总线什么情况下为空闲状态? - 全文
  5. Chapter 2 (Discrete Random Variables): Probability mass functions (PMF 分布列)
  6. java- string转成 json
  7. MCtalk对话尚德机构:与教研和大数据结合的AI,才是真功夫
  8. 地理信息系统和计算机系统的区别,GIS与其他信息系统的区别
  9. 2022-2028年中国淄博房地产行业市场发展潜力及投资策略研究报告
  10. r语言是高级编程语言_什么是R编程?