CodeForce 681C 模拟题

题意

  • 有一个数据结构,能执行三种命令:getMin x,removeMin,insert x。
  • 现有一些随机的命令,补全这些命令使所有的命令合法,并且最终的命令数最少。

题目分析

  • 这个数据结构可以用优先队列实现
  • insert x永远是合法的命令。removeMin在数据结构为空时不合法,不合法时,我们可以先插入一个任意数使它合法。
  • getMin会在数据空,第一个数比它大,第一个数比它小时不合法。分情况解决

注意

  • 这道题我runtimeError了很久。
  • 要特别注意RE,有两种常发生的re的情况。一种情况是数组越界,要么数组开小了,要么程序写错了。
  • 另一种情况是容器类,在pop,top这种操作前一定要检查容器是否空。

输出

  • 这道题输出有点麻烦,得先把输出结果都存储下来,最后再一并输出才行。这里有两种方法。两种方法都得用到sprintf()
  • 一是用vector<string>保存结果,直接用size(),一并输出。
  • 另一种是用一个超长字符串,手动记录命令个数,手动维护超长字符串的指针。
#include<cstdio>
#include<queue>
#include<vector>
#include<string>
#include<iostream>
#include<cstring>
using namespace std;
char op[30];
char tmp[30];
int oprand;
vector<string> log;
priority_queue<int,vector<int>,greater<int> > q;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值