[hihoCoder] #1306 : 股票价格 解题报告

原创 2016年05月30日 11:57:30

题目链接: http://hihocoder.com/problemset/problem/1306

时间限制:20000ms
单点时限:2000ms
内存限制:256MB

描述

小Hi最近在分析一支股票的价格走势,他需要一个程序来辅助分析。这个程序会接收3种消息(指令):

价格信息,格式是P timestamp price:表示这支股票在 timestamp 时刻价格是 price

删除价格指令,格式是R timestamp:随着时间推移,小Hi会积累越来越多的价格数据。一些老旧的数据会变得不重要。这个指定会删除 timestamp 以前(包括 timestamp 时刻)的价格数据。

价格查询指令,格式是Q:小Hi希望程序返回这只股票最高、最低和最近的价格。注意已经被删除的价格不应该被统计。

给定一个包含以上3种信息(指令)的序列,你能否帮助小Hi完成这个程序呢?

输入

第1行包含一个整数 N (1 ≤ N ≤ 500000),表示消息(指令)序列的长度。

第2 - N+1行,每行包含一条消息或指令。

输入保证价格信息是按照 timestamp 升序排列的,并且出现的 timestamp 和价格小于100000000。

输出

对于输入中每一条价格查询指令,输出当时最高、最低和最近的价格。

样例输入
10
P 1 77
P 2 73
P 5 70
P 7 74
Q
R 4
Q
P 8 78
R 5
Q
样例输出
77 70 74
74 70 74
78 74 78

思路: 因为涉及到删除以前某个时间以前的信息, 并且还要统计最高和最低的股票价格, 因此可以用一个map来保存以时间为key的股票价格, 然后以二叉搜索数set保存以股票价格和时间的对. 这样做的好处是map是本身有序的, 这样当我们要删除信息的时候最前面的就是最早的股票信息, 然后我们从map中拿到要删除的股票信息到set中查找要删除的股票, 因为是二叉搜索树, 所有其查找和删除时间复杂度都是O(log n), 还是可以接受的.

代码如下:

/*************************************************************************
	> File Name: stock.cpp
	> Author: Maoting Ren
	> Mail: mren@g.clemson.edu
	> Created Time: Sun 22 May 2016 01:28:27 AM EDT
 ************************************************************************/

#include<iostream>
#include<set>
#include<map>
using namespace std;

int main()
{
    int N, time, price, curTime;
    char ch;
    set<pair<int, int> > st;
    map<int, int> hash;
    cin>>N;
    for(int i =0; i< N; i++)
    {
        cin>>ch;
        if(ch == 'P')
        {
            cin >> time >> price;
            st.insert(make_pair(price, time));
            hash[time] = price;
            curTime = time;
        }
        else if(ch == 'Q')
            cout << st.rbegin()->first << " " << st.begin()->first << " " << hash[curTime] << endl;
        else if(ch == 'R')
        {
            int dtime;
            cin >> dtime;
            while(hash.begin()->first<= dtime)
            {
                st.erase(make_pair(hash.begin()->second, hash.begin()->first));
                hash.erase(hash.begin()); 
            }
        }
    }
    return 0;
}







版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

hihoCoder--153周 股票价格

描述 小Hi最近在分析一支股票的价格走势,他需要一个程序来辅助分析。这个程序会接收3种消息(指令):价格信息,格式是P timestamp price:表示这支股票在 timestamp 时刻价格是...

股票价格统计——Xrld学习

 #codint=UTF-8 #coding:gbk import xlrd data = xlrd.open_workbook(r'F:\20140621持仓...

股票价格与存款准备金之间的关系

一般情况下当存款准备金率上调,资本市场上的流动资金就会相应减少,对股市属利空(除了大牛市);相反当存款准备金率下调,资本市场上的流动资金就会相应增加,对股市属利好(除了熊市);当然还要结合各项经济指标...

股票价格与利息率之间的关系

一、理论来源         在金融学理论中,利率通常被看作宏观经济的“指挥棒”,而股票市场则是宏观经济的重要组成部分。所以从这一点上看,利率和股市之间必然会具有密不可分的关系。       宏观...

股票价格上升将你等待进一步上涨

所以,你愿意投资股票?如果是的,那么什么是你需要的东西之前就要考虑投资?问任何正规的商人,他们一定会建议你先了解市场,然后把你的辛苦挣来的钱。期货这是千真万确的,全面的市场知识是必须的。你应该了解市场...

股票价格预测

我曾经在图书馆里看到一本书,在那本书里作者提出了一种股票预测算法,即历史与未来中心对称与当下,我当时就花了一天时间写下了这个代码。# -*- coding: utf-8 -*- """ Created...

股票价格累积概率分布

sample.txt为上证指数 ,读入sas. filename in 'c:\sample.txt'; data a; infile in dlm='09'x; input id...

Python 实现终端实时获取股票价格

GitHub 里老早之前就 Star 了 felixglow/Stock 这个项目,原作者 felixglow。昨天晚上又想起这个来,于是今儿早上就拿出来看——我对其中相当多的部分都不熟悉,有...

python2.7 实现的实时监控指定股票价格的小程序

本文介绍一个简单的股票价格获取小工具的实现,该工具会根据输入的股票代码显示当前时间的股票价格,定时刷新,间隔时间为1s,实现思路为分析股票网站的内容,利用爬虫技术获取股票价格信息,之后编码实现GUI界...

Leetcode 122. Best Time to Buy and Sell Stock II 股票买卖2 解题报告

1 解题思想首先请看下第一个问题: Leetcode 121. Best Time to Buy and Sell Stock 股票买卖 解题报告 题目给定的数组还是一样的含义,依旧代表股票的价...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)