HDU 6438 网络赛 Buy and Resell(贪心 + 优先队列)题解
思路:维护一个递增队列,如果当天的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 = , ans = ;
for(int i = ; i < n; i++){
scanf("%d", &w);
if(!q.empty() && q.top() < w){
if(st[q.top()] > ){
st[q.top()]--;
}
else{
num += ;
}
st[w]++;
ans += w - q.top();
q.pop();
q.push(w);
}
q.push(w);
}
printf("%lld %lld\n",ans, num);
}
return ;
}
HDU 6438 网络赛 Buy and Resell(贪心 + 优先队列)题解的更多相关文章
- 2018 CCPC 网络赛 Buy and Resell
The Power Cube is used as a stash of Exotic Power. There are n cities numbered 1,2,…,n where allowed ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 1001 - Buy and Resell 【优先队列维护最小堆+贪心】
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6438 Buy and Resell Time Limit: 2000/1000 MS (Java/O ...
- hdu3438 Buy and Resell(优先队列+贪心)
Buy and Resell Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- 沈阳网络赛F-Fantastic Graph【贪心】or【网络流】
"Oh, There is a bipartite graph.""Make it Fantastic." X wants to check whether a ...
- hdu 6444 网络赛 Neko's loop(单调队列 + 裴蜀定理)题解
题意:有编号为0~n-1的n个游戏,每个活动都有一个价值(可为负),给你m,s和k,你可以从任意一个编号开始玩,但是下一个游戏必须是编号为(i + k)%n的游戏,你最多能玩m次游戏,问你如果最后你手 ...
- Hdu 4762 网络赛 高精度大数模板+概率
注意题目中的这句话he put the strawberries on the cake randomly one by one,第一次选择草莓其实有N个可能,以某一个草莓为开头,然后顺序的随机摆放, ...
- poj 2431 Expedition 贪心 优先队列 题解《挑战程序设计竞赛》
地址 http://poj.org/problem?id=2431 题解 朴素想法就是dfs 经过该点的时候决定是否加油 中间加了一点剪枝 如果加油次数已经比已知最少的加油次数要大或者等于了 那么就剪 ...
- 2018 CCPC网络赛
2018 CCPC网络赛 Buy and Resell 题目描述:有一种物品,在\(n\)个地点的价格为\(a_i\),现在一次经过这\(n\)个地点,在每个地点可以买一个这样的物品,也可以卖出一个物 ...
- hdu6438 Buy and Resell 买卖物品 ccpc网络赛 贪心
题目传送门 题目描述: 有n座城市,每座城市都可以对一个物品进行一次的买进或者卖出,可以同时拥有多个物品,计算利润最大值,并且交易次数要最少.(买入卖出算两次操作) 思路: 建立两个小根堆 优先队列, ...
随机推荐
- Java三方---->excel框架之POI的使用一
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能.pdf框架之IText的使用,参见我的博客:Java ...
- pvm虚拟机基本原理
零.绪论:特别鸣谢下文博客,自己博客是对这篇博客的学习笔记: 大佬webber博客:https://www.cnblogs.com/webber1992/p/6597166.html 一.三种文件: ...
- [SQL] MSSQL update 语句中的关联
将tableA 表中的所有title 用tableB中的titlename 更新掉,如果tableB中存在对应的关系 update tableA as a set a.title = (select ...
- iOS CoreMotion 纪录步数
- (void)startUpdateAccelerometer{ /* 设置采样的频率,单位是秒 */ NSTimeInterval updateInterval = 0.05; // ...
- 处理URL传递中文乱码问题
在网上搜了很多资料都没有搞定,一般都有以下几种说法: 方法1:在后台中先获得字符串的iso-8859-1编码形式数组,再使用此数组实例一个UTF-8编码形式String类型字符串. 页面提交的url为 ...
- Haskell ghci中调用pandoc的API进行markdown转换
所用环境:Windows Server 2008 + ghc 7.6.3(Haskell Platform 2013.2.0.0自带的) + pandoc 1.12.4 操作步骤: 1. 安装Hask ...
- 关于#ifndef以及#ifndef WIN32
一般用法是这样的: 这里可以定义如下: #define XXXXX #ifdef XXXXX 这里做一些操作,这些操作只有在XXXX已经被define的情况下才会执行到.一般还可能有else,如 #e ...
- 设计模式之——Observer模式
Observer模式又叫做观察者模式,当观察对象状态发生变化的时候,就会通知给观察者.这种模式适用于根据对象状态进行响应的场景! 实例程序是一个输出数字的程序. 观察者Observer类用于每500m ...
- Python菜鸟之路:Django Admin后台管理功能使用
前言 用过Django框架的童鞋肯定都知道,在创建完Django项目后,每个app下,都会有一个urls.py文件,里边会有如下几行: from django.contrib import admin ...
- SQL基础--查询之五--查询语句一般格式
SQL基础--查询之五--查询语句一般格式