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

尽力买小的,然后卖。。

从第一个开始,把要买的放进优先队列(小根堆)里。

后面的如果小于等于堆顶 就放入堆顶。

大于的话   就把堆顶的卖了,然后买入2次a[i],打个标记代表这个操作过。

后面再进行买卖是不计入交易次数。

#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
#include<queue>
using namespace std;
typedef long long ll;
priority_queue<ll,vector<ll>,greater<ll> >que;
const int M =100000+100;
long long a[M];
map<ll,ll>vis;
int main()
{int t;cin>>t;while(t--){while(!que.empty()) que.pop();vis.clear();ll n;scanf("%lld",&n);for(int i=1;i<=n;i++){scanf("%lld",&a[i]);}int cnt=0;long long sum=0;que.push(a[1]);for(int i=2;i<=n;i++){ll now=que.top();if(a[i]<=now)que.push(a[i]);else if(a[i]>now){cnt++;if(vis[now]>0){vis[now]--;cnt--;}vis[a[i]]++;sum=sum+a[i]-now;que.pop();que.push(a[i]);que.push(a[i]);//   printf("%d ++++++\n",cnt);}}cout<<sum<<" "<<cnt*2<<endl;}return 0;
}

HDU - 6438 优先队列,+贪心。相关推荐

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

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

  2. hdu 4544 优先队列+贪心

    题意:最近,减肥失败的湫湫为发泄心中郁闷,在玩一个消灭免子的游戏. 游戏规则很简单,用箭杀死免子即可. 箭是一种消耗品,已知有M种不同类型的箭可以选择,并且每种箭都会对兔子造成伤害,对应的伤害值分别为 ...

  3. LeetCode 1642. 可以到达的最远建筑(二分查找 / 优先队列贪心)

    文章目录 1. 题目 2. 解题 2.1 二分查找 2.2 优先队列+贪心 1. 题目 给你一个整数数组 heights ,表示建筑物的高度.另有一些砖块 bricks 和梯子 ladders . 你 ...

  4. 【CF 732E】Sockets(优先队列+贪心)

    [CF 732E]Sockets(优先队列+贪心) 题目大意: n台电脑,m个供电器. 每台电脑和每个供电器都有电量,当电脑i的电量和供电器j电量相同时,可以连接供电. 现在提供变压器,可以连接到供电 ...

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

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

  6. HDU 6438 Buy and Resell【贪心】

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

  7. *【HDU - 5711】Ingress(tsp旅行商问题,优先队列贪心,状压dp,floyd最短路,图论)

    题干: Brickgao, who profited from your accurate calculating last year, made a great deal of money by m ...

  8. Buy and Resell HDU - 6438(补)更新贪心

    The Power Cube is used as a stash of Exotic Power. There are nn cities numbered 1,2,-,n1,2,-,n where ...

  9. Buy and Resell HDU - 6438 贪心

    题目描述: 有一个物品,给你这个物品n天的价格,你可以在在第i天买进或卖出或者什么都不做,如何获得最大利益,假设本金是无限大的. 分析: 我们建立一个最小堆,即优先队列,每天,将队列的最小值和当前的值 ...

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

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

最新文章

  1. Linux笔记 软件管理
  2. 用java做出两行三列的表格_Java中,使用HSSFSheet创建excel模板如何创建一列两行的数据?...
  3. 网络流与线性规划24题(写了一半,先鸽下了……)
  4. java图形界面_学习Java有什么用?Java的应用领域有哪些?
  5. 定位叠放次序z-index(HTML、CSS)
  6. 万能模拟器eve-ng介绍
  7. php 数组json失败,php json转数组出错
  8. 使用Arduino和Node.js实现网页界面控制LED的亮度
  9. Eclipse学习笔记
  10. 第十二章 软件壳(四)(代码抽取型壳)
  11. 拼多多笔试题 回合制角色扮演
  12. 机器学习(三):基于线性回归对波士顿房价预测
  13. `spyder总是闪退?spyder打不开?spyder又又又又又出错啦?
  14. 已解决:Ubuntu下台式机前置面板耳机插孔没有声音
  15. 百度快照更新与倒退的官方解释
  16. 思博伦Avalanche测试DDOS攻击
  17. GIF表情包怎么在线制作,如何制作GIF
  18. mysql使用二进制恢复_mysql使用二进制日志恢复数据
  19. H3CSE-WLAN GB0-342题库最新十月高分通过题库VCE GB0342 华三无线中级
  20. 数据容灾备份的等级和技术介绍

热门文章

  1. 【XSY3906】数数题(期望,多项式)
  2. Hazelcast Jet DAG原理
  3. 软件测试薪资标准,软件测试月薪过万需要具备哪些技能?
  4. c语言26字母排序,C语言,26个字母的冒泡排序
  5. HMTL中隐藏域(type=hidden)
  6. word中突然有一行文字间距特别大的解决办法
  7. JVM-由常量池 运行时常量池 String intern方法想到的(三)之String内存模型
  8. java高并发唯一订单号_高并发下唯一订单号生成器--雪花算法
  9. java唯一订单号_java高并发下唯一订单号生成器【16位数字订单号】
  10. 怎么用c语言写汤姆猫小游戏,Android实现汤姆猫小游戏