上海计算机学会 2024年3月月赛 丙组T4 交易记录(map)

本文介绍了一种使用C++map数据结构优化股票交易记录的问题解决方法,通过分别维护买入和卖出交易的map,根据价格排序并合并相同价格的交易数量。作者强调了STL在简化代码中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第四题:T4交易记录

标签 m a p map map
题意:给定 n n n条股票买入卖出操作,有对应的交易单价 a i a_i ai和交易数量 b i b_i bi,分别将多笔买入卖出交易价格相同的进行交易数量合并。买入记录按照交易价格从低到高排序,卖出记录按照交易价格从高到低排序。
题解:按照题意进行模拟,分买入和卖出两种情况,可以通过两个结构体分别进行存储,存储之后分别按照题目中给定的要求进行排序,输出的时候统计一下相同的情况,对应做合并处理,注意一些细节的处理。
上面的这种解法比较好想,但是实现起来比较繁琐,我们通过使用 m a p map map去简化一下,维护一个按照 k e y key key从小到大排序的 b u y buy buy,维护一个按照 k e y key key从大到小的 s e l l sell sell,正常存储,然后对应输出即可。
具体 可以看下面代码,同学们可以多往一些 s t l stl stl的使用去思考,多用用,代码会写的更简洁。
代码

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
map< ll, ll, less<ll> > buy;
map< ll, ll, greater<ll> > sell;

int main() {
    string op;
    ll n, a, b;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> op >> a >> b;
        if (op == "BUY") buy[a] += b;
        else sell[a] += b;
    }
    cout << buy.size() + sell.size() << endl;
    for (auto k: buy) {
        cout << "BUY" << " " << k.first << " " << k.second << endl;
    }
    for (auto k: sell) {
        cout << "SELL" << " " << k.first << " " << k.second << endl;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值