ccf往年真题-集合竞价

2024-02-14 15:38
文章标签 ccf 真题 往年 集合竞价

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

问题描述

  某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量。
  该程序的输入由很多行构成,每一行为一条记录,记录可能有以下几种:
  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。

思路:我的思路很简单,就是把Buy 和sel的数据分别存进两数组,再定义一个数组存记录,方便cancel操作,之后,对buy数组每一个元素都当成定价,然后去模拟,算交易额,再与最大的交易额进行对比。找到定价最高,交易额最大的值。之前想过用Map等一系列操作,但最后改来该去,还是选择用这个,方便使用。当然时间复杂度有点高,ccf对时间要求不高。因此还好,不过最坑不在这里,一想到考试不能立刻看结果,就不知道自己到底有没有错。我写完之后,提交只有80分,找了很久错误,没有发现,后面才之后原来交易额可能超过int存储的范围,因为只需要定义long long int就行。代码如下:

代码:

#include<cstdio>
#include<iostream>
#include<map>
#include<cstring>
using namespace std;
int main(){
//	map<double,int>p1,p2;int x;int i=1,j=1,t=1;char s[5001][100];double jlax[5001],jlbx[5001];//jlax为买出价格集合,b是卖出价格集合 int jlay[5001],jlby[5001];//交易 int jltx[5001],jlty[5001];//记录每条记录 while(scanf("%s",&s[i])!=EOF){	//printf("%s %d",s[i],strlen(s[i])); //if(strlen(s[i])==0)
//	break;if(s[i][0]=='b'){//scanf("%lf%d",&x,&y);scanf("%lf%d",&jlax[j],&jlay[j]);jltx[i]=1;jlty[i]=j;j++;//	p1[x]=y;}if(s[i][0]=='s'){	scanf("%lf%d",&jlbx[t],&jlby[t]);jltx[i]=2;jlty[i]=t++;}//printf("%s   %lf  %d",s,x,y);if(s[i][0]=='c'){scanf("%d",&x);if(jltx[x]==1){jlax[jlty[x]]=0;jlay[jlty[x]]=0;}else{jlbx[jlty[x]]=0;jlby[jlty[x]]=0;}}getchar();i++;
//	if(i==3)// break;
}
//printf("%d ",t);long long int sumx=0,sumy=0;//分别记录买和卖的交易额 int mi;//循环遍历 long long int maxb=0;//存最大的交易额 double maxa=0;//存最终的定价 double tm;//当前定价 for(i=1;i<j;i++){sumx=0;sumy=0;if(t==1||j==1){break;}tm=jlax[i];if(tm==0)continue;for(mi=1;mi<j;mi++){if(jlax[mi]>=tm){sumx+=jlay[mi];//		printf("%d ",sumx);}}for(mi=1;mi<t;mi++){//	printf("%lf ",jlbx[mi]);if(jlbx[mi]<=tm){sumy+=jlby[mi];//	printf("%d %d",sumy,jlby[mi]);}}if(sumx>sumy){sumx=sumy;}//	printf("%d %d",sumx,sumy);if(maxb<sumx){maxa=tm;maxb=sumx;}else if(maxb==sumx){if(maxa<tm){maxa=tm;}}}if(maxb==0){maxa=0;}printf("%0.2lf %lld",maxa,maxb);return 0;
} 

 

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



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

相关文章

华为OD机试真题-学生方阵-2024年OD统一考试(E卷)

题目描述 学校组织活动,将学生排成一个矩形方阵。 请在矩形方阵中找到最大的位置相连的男生数量。这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的。 注:学生个数不会超过10000 输入描述 输入的第一行为矩阵的行数和列数, 接下来的 n行为矩阵元素,元素间用""分隔。 输出描述 输出一个整数,表示矩阵中最长的位

2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)

根据通知,2024年AMC10美国数学竞赛的报名还有两周,正式比赛还有两个月就要开始了。计划参赛的孩子们要记好时间,认真备考,最后冲刺再提高成绩。 那么如何备考2024年AMC10美国数学竞赛呢?做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。

CCF推荐C类会议和期刊总结(计算机网络领域)

CCF推荐C类会议和期刊总结(计算机网络领域) 在计算机网络领域,中国计算机学会(CCF)推荐的C类会议和期刊为研究者提供了广泛的学术交流平台。以下是对所有C类会议和期刊的总结,包括全称、出版社、dblp文献网址以及所属领域。 目录 CCF推荐C类会议和期刊总结(计算机网络领域) C类期刊 1. Ad Hoc Networks 2. CC 3. TNSM 4. IET Com

大厂算法例题解之网易2018秋招笔试真题 (未完)

1、字符串碎片 【题目描述】一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,“aaabbaaac” 是由下面碎片组成的:‘aaa’,‘bb’,‘c’。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的 平均长度是多少。 输入描述: 输入包括一个字符串 s,字符串 s 的长度 length(1 ≤ length ≤ 50),s 只含小写字母(‘a’-‘z’) 输出描述

上海大学《2022年836+915自动控制原理真题及答案》 (完整版)

Part1:2022年上海大学真题题目 学硕836 专硕915 Part2:2022年上海大学真题答案 学硕836 专硕915

华为OD机试真题-猜字谜-2024年OD统一考试(E卷)

题目描述 小王设计了一个简单的猜字谜游戏,游戏的谜面是一个错误的单词,比如 nesw,玩家需要猜出谜底库中正确的单词。猜中的要求如下.对于某个谜面和谜底单词,满足下面任一条件都表示猜中: 1、变换顺序以后一样的,比如通过变换 w和e的顺序,“nwes”跟“news”是可以完全对应的: 2、字母去重以后是一样的,比如“woood”和“wood”是一样的,它们去重后都是“wod'请你写一个程序帮忙在

2024年六月英语四级真题及解析PDF共9页

2024年六月英语四级真题及解析PDF共9页,真题就是最好的复习资料,希望对大家有所帮助。

2024年6月第2套英语四级真题PDF

2024年6月第2套英语四级真题PDF

计算机二级真题--程序设计大题 章节

1.计算sum的时候一般用double类型而不是int类型(要注意看题目中的格式) 2.判断素数是设置一个变量使其从2开始无论如何变化都不被输入的值整除,即都不为0即可 3.求最值思路,将一组数据中的第一个元素设置为最大值最小值,然后让这个元素和其他元素对比 则后面的数组需要从i=1开始循环 4.记得将指针初始化为0 5.如果初始化S则需要给其赋值,比如赋值0或者1; 6.如果返回的是

【408DS算法题】036基础-14年真题_求二叉树的WPL

Index 真题题目分析实现总结 真题题目 二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和。给定一棵二叉树T ,采用二叉链表存储, 结点结构如下: 其中叶结点的weight域保存该结点的非负权值。设root为指向T的根结点的指针, 请设计求T的WPL的算法, 要求: 1 - 给出算法的基本设计思想。 2 - 使用C或C++语言, 给出二叉树结点的数据类型定