CCF 201412-3 集合竞价
问题描述
某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量。
该程序的输入由很多行构成,每一行为一条记录,记录可能有以下几种:
1. buy p s 表示一个购买股票的买单,每手出价为p,购买股数为s。
2. sell p s 表示一个出售股票的卖单,每手出价为p,出售股数为s。
3. cancel i表示撤销第i行的记录。
如果开盘价为p0,则系统可以将所有出价至少为p0的买单和所有出价至多为p0的卖单进行匹配。因此,此时的开盘成交量为出价至少为p0的买单的总股数和所有出价至多为p0的卖单的总股数之间的较小值。
你的程序需要确定一个开盘价,使得开盘成交量尽可能地大。如果有多个符合条件的开盘价,你的程序应当输出最高的那一个。
输入格式
输入数据有任意多行,每一行是一条记录。保证输入合法。股数为不超过108的正整数,出价为精确到恰好小数点后两位的正实数,且不超过10000.00。
输出格式
你需要输出一行,包含两个数,以一个空格分隔。第一个数是开盘价,第二个是此开盘价下的成交量。开盘价需要精确到小数点后恰好两位。
样例输入
buy 9.25 100
buy 8.88 175
sell 9.00 1000
buy 9.00 400
sell 8.92 400
cancel 1
buy 100.00 50
样例输出
9.00 450
评测用例规模与约定
对于100%的数据,输入的行数不超过5000。
分析
从高价往低价买,从低价往高价卖,直到卖价高于买价,得到开盘价。
代码
#include<iostream>
#include<vector>
#include<queue>
#include<cstdio>
#include<string>
using namespace std;
struct node
{int type;//0卖 1买 -1取消double p;long long s;node(){}node(int type,double p,long long s):type(type),p(p),s(s){}bool operator< (const node &n)const{if(!type) return p>n.p;return p<n.p;}
};
priority_queue<node> s_que,b_que;int main()
{string str;node ns[5007];int i=0,x;double p;long long sum=0;while(cin>>str)//输入数据{i++;if(str[0]=='b'){cin>>ns[i].p>>ns[i].s;ns[i].type=1;}else if(str[0]=='s'){cin>>ns[i].p>>ns[i].s;ns[i].type=0;}else{cin>>x;ns[i].type=ns[x].type=-1;}}for(int j=1;j<=i;j++)//入队{if(ns[j].type==0) s_que.push(ns[j]);if(ns[j].type==1) b_que.push(ns[j]);}while(!s_que.empty()&&!b_que.empty())//匹配{node s=s_que.top(),b=b_que.top();s_que.pop(); b_que.pop();if(s.p>b.p) break;sum+=min(s.s,b.s);p=b.p;if(s.s>b.s){s.s-=b.s;s_que.push(s);}else if(s.s<b.s){b.s-=s.s;b_que.push(b);}}printf("%.2f %lld",p,sum);//long long 必须用%lld!return 0;
}
题解汇总
CCF-CSP认证历年题解
CCF 201412-3 集合竞价相关推荐
- python ccf题解 201412-3 集合竞价
问题描述 试题编号: 201412-3 试题名称: 集合竞价 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定 ...
- CCF CSP 201412-3 集合竞价 python
201412-3 集合竞价 import sys records = []# ctrl+D stop for line in sys.stdin:record = line.split()record ...
- CCF CSP 集合竞价 (2014-12)
问题描述 某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量. 该程序的输入由很多行构成,每一行为一条记录,记录可能有以下几种: 1. buy p s 表示一个 ...
- CCF 集合竞价 (满分代码 + 解题思路 + 技巧总结)201412 - 3
技巧总结 当需要一对数据取最值时,不一定需要用pair进行存储(比较繁琐),利用两个变量维护当前最值 要注意数据范围是否会爆int 所有数据定义时一定不要忘记初始化 题目描述 解题思路 数据范围不大只 ...
- *5-2 CCF 2014-12-3 集合竞价
集合竞价 题目描述 源代码 题目描述 源代码 #include<iostream> #include<cstring> #include<vector> using ...
- CCF 201412-3 集合竞价 90分代码 C++
问题描述 某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量. 该程序的输入由很多行构成,每一行为一条记录,记录可能有以下几种: 1. buy p s 表示一个 ...
- CCF计算机软件能力认证 C++ 集合竞价
问题描述 某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量. 该程序的输入由很多行构成,每一行为一条记录,记录可能有以下几种: 1. buy p s 表示一个 ...
- CCF刷题合集(部分题解)
CCF 刷题满分代码 注意第一题的话如果比较简单有的我可能没写,有链接的可能写了也只有代码. 202012 202012-1 期末预测之安全指数 CCF 202012-1 期末预测之安全指数 2020 ...
- CCF CSP认证菜鸟刷题日志
CCF CSP菜鸟刷题日志(c/c++) 本萌新写给自己看的,要是有大佬路过,请多多指教orz 立个flag:每日一更,至201903 9月15ccf csp,冲鸭! 今天(2019.8.18)起每天 ...
最新文章
- boost::range模块sliced相关的测试程序
- HTML5 + CSS 左右排版自适应高
- Netflix如何通过重构视频Gatekeeper提升内容运营效率?
- JavaScript自调用匿名函数
- 面向对象的四个基本特征
- Java 构造器 通过私有构造器强化不可实例化的能力
- 北斗导航 | ARAIM:Advanced RAIM流程及基本原理(LPV-200)
- CMD使用教程-整理最全面的cmd用法
- 无参考图像质量评价——漏勺模型
- 北京大学C语言学习第6天
- 前端写出优雅的代码,融会贯通es6
- 印度软件腾飞不是偶然
- STM32H7内部Flash的读保护说明(Level0默认,Level1连接保护,Level2设备和自举保护)
- windows和ubuntu双系统,ubuntu下硬盘变成只读状态,无法粘贴文件的有效解决方法
- idea下maven下载依赖ssl错误
- RStudio入门教程(二)RStudio数据处理
- Python的日志输出
- python画树林_在Python 3中使用深度森林(Deep Forest)进行分类
- python爬取糗事百科内容
- C# SuperSocket 手把手教你入门 傻瓜教程---1(服务器单向接收客户端发送数据)
热门文章
- jdk11基础上安装jdk1.8总结
- 关于创业及相关的几条微博
- 上位机使用C++通过ADS协议与倍福PLC通信例程-字符串变量读取
- MySQL:数据库压力测试报告
- android数据库的创建
- http://www.yesky.com/424/163424.shtml http://www.yesky.com/424/163424.shtml
- 百度地图根据经纬度计算距离php,详解js根据百度地图提供经纬度计算两点距离...
- Python-井字棋游戏
- echarts设置饼状图的标示线以及标示文字的颜色等相关样式
- 第三方的登录----微信登录实现流程