cf 681C
来源:互联网 发布:山东数据恢复厂家 编辑:程序博客网 时间:2024/05/21 05:17
原题:点击打开链接
有一个堆,给你一些操作,分别是往这个堆加数,移除最小值和查询最小值,让你按照这些操作做,并且要最少次操作,输出这些操作记录。
注意查询最小值x时记得判断当前堆的最小值是否为x,若大于x则插入x,小于则要移除最小值。当堆为空时,必须先插入一个数才能移除最小值。
一道模拟题,用了multiset按照降序来存储堆里面的数值。
#include <cstdio>#include <cstring>#include <string>#include <iostream>#include <algorithm>#include <set>#define inf 1e8using namespace std;const int maxn=1e5+10;const int maxm=1e6+10;char ss[maxm][15],s[maxn][15];int a[maxn],c[maxn],a1[maxm],c1[maxm];multiset<int, greater<int> > b;int main(){ char in[]="insert"; char re[]="removeMin"; char ge[]="getMin"; int n; while(scanf("%d",&n)!=EOF) { int cnt=0; for(int i=0;i<n;i++) { scanf("%s",&s[i]); if(s[i][0]=='i') { scanf("%d",&a[i]); } else if(s[i][0]=='g') { scanf("%d",&c[i]); } } for(int i=0;i<n;i++) { if(s[i][0]=='i') { strcpy(ss[cnt],s[i]); a1[cnt]=a[i]; cnt++; b.insert(a[i]); } else if(s[i][0]=='r') { if(!b.empty()) { b.erase(--b.end()); } else { strcpy(ss[cnt],in); a1[cnt]=0; cnt++; b.insert(0); b.erase(--b.end()); } strcpy(ss[cnt],s[i]); cnt++; } else { if(!b.empty()) { if(*(--b.end())==c[i]) { strcpy(ss[cnt],s[i]); c1[cnt]=c[i]; cnt++; } else if(*(--b.end())>c[i]) { strcpy(ss[cnt],in); a1[cnt]=c[i]; cnt++; b.insert(a[i]); strcpy(ss[cnt],ge); c1[cnt]=c[i]; cnt++; } else if(*(--b.end())<c[i]) { while(!b.empty()&&*(--b.end())<c[i]) { strcpy(ss[cnt],re); cnt++; b.erase(--b.end()); } if(b.empty()||*(--b.end())>c[i]) { strcpy(ss[cnt],in); a1[cnt]=c[i]; cnt++; b.insert(c[i]); } strcpy(ss[cnt],ge); c1[cnt]=c[i]; cnt++; } } else { strcpy(ss[cnt],in); a1[cnt]=c[i]; cnt++; b.insert(c[i]); strcpy(ss[cnt],ge); c1[cnt]=c[i]; cnt++; } } } printf("%d\n",cnt); for(int i=0;i<cnt;i++) { if(ss[i][0]=='i') printf("%s %d\n",ss[i],a1[i]); else if(ss[i][0]=='r') printf("%s\n",ss[i]); else printf("%s %d\n",ss[i],c1[i]); } b.clear(); } return 0;}
0 0
- cf 681 C(模拟)
- cf 681C
- CF 190C STL
- CF 79C. Beaver
- CF 229C Triangles
- CF 4 C
- cf 230c
- CF 255C
- CF 27C
- CF 52C
- CF 190C
- CF 191 div2 C
- CF 143 div2 C
- CF-div2-192-C
- cf 100 c(greedy)
- CF 188 (div2 C)
- cf-337C Quiz
- CF - 44C - Holidays
- Eclipse如何给main方法传值
- 数据结构与算法基础——链表相关
- 99累加
- git 安装
- FluentData介绍
- cf 681C
- ceph存储 服务器硬盘故障预测实践
- 新建一个vue项目
- 学好java设计模式,编程不迷茫--java学习笔记
- 博为峰JavaEE技术文章 ——MyBatis 拦截器(1)接口简介
- soap消息jdk版本问题导致报错
- 我希望进入大学时就能知道的一些事儿
- css 透明度问题
- 哈夫曼树实现文件的压缩与解压缩