CSP2014_12_3集合竞价

2024-04-05 23:38
文章标签 集合竞价 csp2014

本文主要是介绍CSP2014_12_3集合竞价,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

 

201412-3
试题名称:集合竞价
时间限制:1.0s
内存限制:256.0MB
问题描述:

问题描述

  某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量。
  该程序的输入由很多行构成,每一行为一条记录,记录可能有以下几种:
  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<cstdio>
#include<iostream>
#include<vector>
#include<string>
#include<map>
#include<set>
#include<cstring>
#include<cmath>
#define pb push_back
#define rep(i,j,k) for(int i=j;i<k;++i)
#define mst(a,b) memset((a),(b),sizeof(a))
using namespace std;
typedef long long LL;
typedef vector<int,int> pii;
struct Stock{int type;double price;int num;Stock(){}Stock(int pt,double pp, int nn):type(pt),price(pp),num(nn){}
}stk[5005];int main(){//	freopen("input.txt","r",stdin);set<double,greater<double> > p; //存储可能的开盘价格 char s[10];double price;int num,pos[5005]; //pos记录取消的位置 int cnt = 0,t,tol = 1;while(scanf("%s",&s) != EOF){if(s[0] != 'c'){scanf(" %lf %d",&price,&num);p.insert(price);if(s[0] == 'b'){stk[tol++] = Stock(1,price,num);}else if(s[0] == 's'){stk[tol++] = Stock(-1,price,num);}}else if(s[0] == 'c'){scanf(" %d",&t);pos[cnt++] = t;stk[tol++] = Stock(0,0.0,0);//为了等下方便cancel 也加上一个无效的stk }}for(int i = 0; i < cnt; ++i){ //cacel i stk[pos[i]] = (Stock){0,0,0};}	LL sum_b = 0,sum_s = 0,mmax = -1; // 要用long long double open_price = 0.0;// 遍历每一个可能的开盘价格 取成交量最大时的最大开盘价格 for(set<double>::iterator it = p.begin(); it != p.end(); ++it){double cur_p = *it;sum_b = sum_s = 0;for(int i = 1; i < tol; ++i){Stock _stk = stk[i];if(_stk.type == 1 && _stk.price >= cur_p){sum_b += _stk.num;}if(_stk.type == -1 && _stk.price <= cur_p){sum_s += _stk.num;}}LL cur_max = min(sum_b,sum_s); //成交量为当前buy 与sell的最小值 if(cur_max > mmax){open_price = cur_p;mmax = cur_max;}}printf("%.2f %lld\n",open_price,mmax);return 0;}

 

这篇关于CSP2014_12_3集合竞价的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/878467

相关文章

15、【集合竞价】

文章目录 集合竞价时间集合竞价量柱的关系a、亮度顶部是未匹配的成交量b、量柱底部表示虚拟撮合的成交量 集合竞价常用的几种形态1、低开集合竞价2.平开集合竞价3、高开集合竞价4、看集合竞价的关键时间点:5、需要注意的几点 庄家使用集合竞价进行的操作1、利用集合竞价进行试盘。1. 利用集合竞价进行涨停试盘 使用集合竞价进行抢筹的注意事项小散短线 集合竞价时间 如下图所示: 集

集合竞价 CCF java实现 (大部分代码是借鉴的别人的,)

(只是把借鉴代码完善成100分了,分享给大家) 问题描述   某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量。   该程序的输入由很多行构成,每一行为一条记录,记录可能有以下几种:   1. buy p s 表示一个购买股票的买单,每手出价为p,购买股数为s。   2. sell p s 表示一个出售股票的卖单,每手出价为p,出售股数为s。

怎样集合竞价买股票

1)9:15----9:20这五分钟开放式集合竞价可以委托买进和卖出的单子,你看到的匹配成交量可能是虚假的,因这5分钟是可以撤单,很多主力在9:19:30左右撤单,当你买进时,你不撤单,他可撤出,然后他卖给你,因此你一定要把撤单键放在手上。     2)9:20---9:25这五分钟开放式集合竞价可以输委托买进和卖出的单子,但不能撤单,有的投资者认为他己撤单就完事了,事实上这五分钟撤单无效,白白输

ccf往年真题-集合竞价

问题描述   某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量。   该程序的输入由很多行构成,每一行为一条记录,记录可能有以下几种:   1. buy p s 表示一个购买股票的买单,每手出价为p,购买股数为s。   2. sell p s 表示一个出售股票的卖单,每手出价为p,出售股数为s。   3. cancel i表示撤销第i行的记录。   如果

CCF 201412-3 集合竞价 未解决

问题描述 某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量。   该程序的输入由很多行构成,每一行为一条记录,记录可能有以下几种:   1. buy p s 表示一个购买股票的买单,每手出价为p,购买股数为s。   2. sell p s 表示一个出售股票的卖单,每手出价为p,出售股数为s。   3. cancel i表示撤销第i行的记录。

众和策略:股市几点开始集合竞价?

股市中的集合竞价是每个生意日的重要环节。而集合竞价在什么时刻初步,这个问题是股民经常会问的。在这篇文章中,咱们将从多个角度分析股市集合竞价的时刻问题,并为你回答答案。 一、集合竞价简介 集合竞价是证券生意市场上守时进行的一种会集报价生意。就是指生意日开盘前一段时刻,股民在货台或网上生意渠道,按照自己意料的价格和数量来挂单生意。集合竞价时刻一般是9:15~9:25,生意时刻从9:30初步到1

高忆管理:集合竞价可以卖股票吗?

集合竞价是证券买卖所开盘前的一种买卖方式,其意图是为了在买卖所开盘之前构成有用的商场价格。因为商场处于初始状况,买卖量较小,因而集合竞价价格或许与买卖日中的实践买卖价格有所不同。那么,集合竞价是否能够卖股票呢?本文将从多个角度对这个问题进行剖析。   首要,集合竞价是一个早期买卖阶段,相当于股票买卖所的开盘前的一段时间。在集合竞价期间,投资者能够进行买入和卖出股票的买卖。但是,因为此刻买卖量较

港联证券-尾盘集合竞价拉升意味着什么意思?

在股票市场中,尾盘集合竞价是指每个交易日的最后几分钟,即下午14:57到3:00之间的交易。在这段时间内,所有股票的买卖都将以竞价的方式进行,最终价格以最高买价与最低卖价的平均值确定,成交量也将作为当日的收盘价和成交量。而当尾盘集合竞价出现拉升现象时则意味着什么呢?   一、市场情绪上涨 尾盘集合竞价时股价的拉升,体现了市场情绪的上涨。这种情况下,股票市场的投资者普遍认为该股票有望获得更高的

【CCF-CSP】 201412-3 集合竞价 C++

文章目录 一、题目二、解题1.题目2.代码3.提交结果 总结1.解释 一、题目 原题目链接 二、解题 1.题目 这是一个股票市场模拟交易程序。它通过读入一行代表操作(买、卖或撤单)的字符串,进行相应的操作并计算出最优解(即所有买卖双方交易的最大数量)以及最终成交价格,最后输出这个最优解和价格。 输入并存储数据 在输入数据过程中,程序通过一个 while 循环读入

CCF-201412-3(集合竞价)

一:问题描述 1.问题描述 某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量。   该程序的输入由很多行构成,每一行为一条记录,记录可能有以下几种:   1. buy p s 表示一个购买股票的买单,每手出价为p,购买股数为s。   2. sell p s 表示一个出售股票的卖单,每手出价为p,出售股数为s。   3. cancel i表示撤销第i行