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

1.当做中间价/最终卖出价

2.买入价

所以我们入队两个w,如果w是买入价,那么其中一个w作为中间价势必弹出,另一个w作为买入价;如果w是最终卖出价,那么两个w会一直待在队列里。

计算总数很简单,用map[i]表示以i为中间价还存在多少个,如果是中间价就不加数量。

记得开long long orz

参考:CodeForces - 867E Buy Low Sell High 贪心 + 优先队列

代码:

#include<cstdio>
#include<queue>
#include<map>
#include<algorithm>
#include<iostream>
#define ll long long
using namespace std;
priority_queue<int, vector<int>, greater<int> > q;
map<int, int> st;
int main(){int T, n, w;scanf("%d", &T);while(T--){st.clear();while(!q.empty()) q.pop();scanf("%d", &n);ll num = 0, ans = 0;for(int i = 0; i < n; i++){scanf("%d", &w);if(!q.empty() && q.top() < w){if(st[q.top()] > 0){st[q.top()]--;}else{num += 2;}st[w]++;ans += w - q.top();q.pop();q.push(w);}q.push(w);}printf("%lld %lld\n",ans, num);}return 0;
}

转载于:https://www.cnblogs.com/KirinSB/p/9536670.html

HDU 6438 网络赛 Buy and Resell(贪心 + 优先队列)题解相关推荐

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

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

  2. HDU 5246 超级赛亚ACMer 【贪心】【STL版本二分】

    超级赛亚ACMer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  3. 2019 ICPC中国邀请赛(南昌)暨国际丝绸之路程序设计竞赛-网络赛题解

    以下所有AC题解程序来自"仙客传奇"团队. AC题数:10/13 ABCDHIJKLM A. PERFECT NUMBER PROBLEM 解题思路:先编写离线程序计算出最小的5个 ...

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

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

  5. 2019CCPC网络赛 1002 HDU 6703(权值线段树)

    2019CCPC网络赛 1002 HDU 6703(权值线段树) 思路:用权值线段树存题目给的数据后,2操作就是求权值线段树中大于等于k的部分中,靠近左端点的第一个大于r的值(这个求出来的只是原序列中 ...

  6. ACM练级日志:HDU 4735(ACM 成都网络赛) 重复覆盖与DLX

    今天费了一下午+一晚上的劲,终于把重复覆盖问题给解决了.作为这算法的牺牲品的就是成都网络赛让我知道DLX这东西存在的那道题,HDU 4735.这也是第一次尝试独立对问题构造矩阵然后调用DLX得出结果的 ...

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

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

  8. 2018中国大学生程序设计竞赛 – 网络选拔赛 1001 Buy and Resell [模拟]

    1001 Buy and Resell  题目:有1-n个货物,可以在某个点buy,然后在后面的点resell,可以同时买多个,问最大的利润和最小的交易次数. 题解:模拟运算,前 i 天都是可以买的, ...

  9. Buy and Resell

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

最新文章

  1. Linux驱动:TI达芬奇系列kernel中cup类型的判断,以cpu_is_ti81xx()为例
  2. JavaScript Bitwise NOT Operator
  3. 从零搭建Prometheus监控报警系统
  4. sentinel接入网关应用_阿里Sentinel整合Zuul网关详解
  5. spring(13)缓存数据
  6. 晨哥真有料丨太快得到是不是就不珍惜了?这锅,男生真的不背!
  7. 什么是web前端?Web前端好入门吗?
  8. ubuntu安装vsftpd遇到的问题
  9. TreeSet集合为什么要实现Comparable?
  10. Reading HTML content from a UIWebView
  11. 没有的功能,直接回答并不好
  12. 使用Apifox测试套件自动化测试接口
  13. 如何检测判断硅钢片性能牌号?
  14. 用计算机画频率分布直方图,频率分布直方图
  15. 【高数】极限运算法则+两个重要极限
  16. 魔兽争霸的历史(ZT)第二章
  17. 使用Flash在线制作头像
  18. 大蟒蛇python头像_Python微信好友头像大拼图案例
  19. 第六次前端培训(JavaScript)
  20. 微信小程序识别图片并提取文字_这款微信小程序可以批量图片转文字?识别准确率超高!...

热门文章

  1. SAP RETAIL - How to activate SAP Retail system
  2. MIT给人工智能“泼冷水”:AI创造性目前有限
  3. Facebook参与AI芯片设计大混战!
  4. 读了这篇文字,做年薪百万的NLP工程师
  5. 披上AI战衣的中国APP,正在让印度节节败退
  6. SAP MB1B + 313315做二步法货物移动报错-创建交货的数据不完全(客户)-
  7. 免费教材丨第49期:数学基础课程----漫画线性代数、微积分超入门
  8. 《数学之美》第27章 期望最大化算法
  9. CICC《城市大脑建设规范》标准建设启动会在京召开
  10. 光辉岁月:人工智能的那些人和事(1)