HDU6438 Buy and Resell 2018CCPC网络赛 -低买高卖-贪心经典题
(有任何问题欢迎留言或私聊 && 欢迎交流讨论哦
Catalog
Problem:Portal传送门
原题目描述在最下面。
出过很多次:51nodNOIP提高组贪心专题A,牛客寒假多校(不记得那场了),CodeforcesContest865D。
低买高卖,每次只能买入或卖出一件商品,你买得起所有商品,问你最多盈利多少?
ps:FZU2281 Trades是可以买入卖出许多件物品.
Solution:
对于当前价格B而言,只要前面有比这个价格低的价格A,那么当前情况A买入B卖出一定盈利
但是A买入B卖出不一定是最优解,所以为了有后悔药吃,就再push两个B进入优先队列,一个表示卖出,一个表示买入。
每天都卖出,每次累加差值就可以了。累加很多个差分值肯定会得到最优解的。
因为A买入B卖出B买入C卖出 和 A买入C卖出 效果一样
AC_Code:
#include<bits/stdc++.h>
#define mme(a,b) memset((a),(b),sizeof((a)))
using namespace std;
typedef long long LL;
const int INF = 0x3f3f3f3f;
int main() {
int tim;
int n;
scanf("%d", &tim);
while(tim--){
scanf("%d",&n);
priority_queue<pair<int,int>>q;
LL ans = 0;
int tot = 0;
for(int i = 0, x; i < n; ++i){
scanf("%d",&x);
q.push(make_pair(-x,1));//买入
q.push(make_pair(-x,2));//卖出
LL tmp=x+q.top().first;
if(q.top().second == 1)tot+=2;//对于实际交易,买入一次必对应一次卖出
ans += tmp;
q.pop();
}
printf("%lld %d\n",ans,tot);
}
return 0;
}
####Problem Description:

HDU6438 Buy and Resell 2018CCPC网络赛 -低买高卖-贪心经典题的更多相关文章
- 【LeetCode+51nod】股票低买高卖N题
[121]Best Time to Buy and Sell Stock (2018年11月25日重新复习) 给一个数组代表股票每天的价格,只能有一次交易,即一次买入一次卖出,求最大收益. 题解:用一 ...
- hdu6438 Buy and Resell 买卖物品 ccpc网络赛 贪心
题目传送门 题目描述: 有n座城市,每座城市都可以对一个物品进行一次的买进或者卖出,可以同时拥有多个物品,计算利润最大值,并且交易次数要最少.(买入卖出算两次操作) 思路: 建立两个小根堆 优先队列, ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 hdu6438 Buy and Resell 买入卖出问题 贪心
Buy and Resell Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- 2018CCPC网络赛
A - Buy and Resell HDU - 6438 The Power Cube is used as a stash of Exotic Power. There are nn cities ...
- hdu6438 Buy and Resell
多少年不写题了... (我把每一天看作是一个商品,第i天是第i个商品) 一开始看了半天看出来一个性质:买的所有商品中最贵的不会比卖的所有商品中最便宜的贵,然后似乎没有什么用处.... 所以最后还是看题 ...
- HDU6438 Buy and Resell 解题报告(一个有趣的贪心问题的严格证明)
写在前面 此题是一个很容易想到的贪心题目,但是正确性的证明是非常复杂的.然而,目前网上所有题解并未给出本题贪心算法的任何正确性证明,全部仅停留在描述出一个贪心算法.本着对算法与计算机科学的热爱(逃), ...
- hdu6440 Dream 2018CCPC网络赛C 费马小定理+构造
题目传送门 题目大意: 给定一个素数p,让你重载加法运算和乘法运算,使(m+n)p=mp+np,并且 存在一个小于p的q,使集合{qk|0<k<p,k∈Z} 等于集合{k|0<k&l ...
- hdu6446 Tree and Permutation 2018ccpc网络赛 思维+dfs
题目传送门 题目描述:给出一颗树,每条边都有权值,然后列出一个n的全排列,对于所有的全排列,比如1 2 3 4这样一个排列,要算出1到2的树上距离加2到3的树上距离加3到4的树上距离,这个和就是一个排 ...
- 2018CCPC网络赛A(优先队列,思维)
#include<bits/stdc++.h>using namespace std;priority_queue<pair<int,int>>q;int main ...
随机推荐
- leetcood学习笔记-27-移除元素
题目: 第一次提交: class Solution: def removeElement(self, nums, val: int) -> int: for i in range(len(num ...
- 管理员技术(二): 访问练习用虚拟机、 命令行基础技巧 、 挂载并访问光盘设备、ls列表及文档创建、复制删除移动
一.访问练习用虚拟机 目标: 学会在教学环境中访问练习用虚拟机,主要完成以下事项: 1> 快速重置教学虚拟机环境 2> 通过“虚拟系统管理器”访问虚拟机 3> ...
- 高级运维(一):反向代理&使用Varnish加速Web
案例1.反向代理 目标: 1.代理服务器可以将远程的Web服务器页面缓存于本地 2.代理服务器端口设置为80端口 3.用户通过访问代理服务器即可获得远程Web服务器页面上的内容 4.远程We ...
- s13 day3作业
ha_proxy配置文件修改程序ha_file 为存储配置信息的文件.运行的时候对该文件进行操作.1.查询信息:用户输入域名,获得域名相关信息2.修改配置文件:用户输入的格式应该为 {"ba ...
- docker学习路线图
https://yq.aliyun.com/articles/40494?spm=a2c4e.11153959.teamhomeleft.23.6ea918b1KErlfs
- sqlserver 登录记录(登录触发器)
本人自用 sqlserver 账号登录的记录(记录表+登录触发器) --存储账号的登录记录信息 use [YWmonitor] go create table access_log ( ,) NOT ...
- git分布式版本控制系统权威指南学习笔记(六):git reset、get stash、git checkout总结
文章目录 1. 概述 2. 如何把修改暂存起来,留着以后使用? 2.1 使用场景 2.2 git stash 暂存进度 2.3 查看进度 2.4 恢复进度 3. 如何撤销工作区的修改? 4. 如何把暂 ...
- mvn eclipse:eclipse
pom.xml 在哪个文件夹, 你就在哪里按shift 右键,,[在此处打开命令窗口] 执行那个命令. mvn eclipse:eclipse
- jsp2自定义标签+属性
前面说过jsp2自定义标签如果要加入属性需要设置属性的getter和setter方法.代码如下: public class GetParam extends SimpleTagSupport { pr ...
- error C4996: 'getcwd': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getcwd. See online help for details. c:\users\12968\desktop\testapp\testapp\testapp.c
解决办法: 属性>C/C++>预处理器定义>分别输入: _CRT_SECURE_NO_WARNINGS _CRT_SECURE_NO_DEPRECATE >保存退出即可