C++ map & set
山东第六届ACM省赛B题
超时代码:
#include<iostream>
#include<cstdio>
#include<string.h>
#include<sstream>
#include<string>
#include<map>
#include<iterator> using namespace std;
map<int,int>mp;
int main()
{
int T,n;
cin>>T; while(T--)
{
mp.clear();
cin>>n;
getchar();
char f;
int v;
map<int,int>::iterator it;
for(int i = ; i < n; ++i)
{
cin>>f;
if(f=='q')
{
for(it=mp.begin(); it!=mp.end(); it++)
if(it->second==){
cout<<it->first<<endl;
break;
}
if(it==mp.end())cout<<"none"<<endl;
}
else if(f=='b')
{
cin>>v;
mp[v]++;
}
else if(f=='c')
{
cin>>v;
mp[v]--;
}
}
}
return ;
}
AC Code:
#include<iostream>
#include<cstdio>
#include<string.h>
#include<sstream>
#include<string>
#include<map>
#include<iterator>
#include<set>
using namespace std;
set<int> si; ///始终存放的是出现次数为 1 的元素,内部的元素自动的由set排序
map<int,int>mp;
int main()
{
int T,n;
cin>>T;
while(T--)
{
mp.clear();
si.clear();
cin>>n;
getchar();
char f;
int v;
map<int,int>::iterator it;
for(int i = ; i < n; ++i)
{
cin>>f;
if(f=='q')
{
if(!si.empty())cout<<*si.begin()<<endl;
else cout<<"none"<<endl;
}
else if(f=='b')
{
cin>>v;
mp[v]++;
if(mp[v]==)
si.insert(v);
else si.erase(v);
}
else if(f=='c')
{
cin>>v;
mp[v]--;
if(mp[v]==)
si.insert(v);
else si.erase(v);
}
}
}
return ;
}
C++ map & set的更多相关文章
- mapreduce中一个map多个输入路径
package duogemap; import java.io.IOException; import java.util.ArrayList; import java.util.List; imp ...
- .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法
.NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法 0x00 为什么需要Map(MapWhen)扩展 如果业务逻辑比较简单的话,一条主管道就够了,确实用不到 ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- Java基础Map接口+Collections
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- 多用多学之Java中的Set,List,Map
很长时间以来一直代码中用的比较多的数据列表主要是List,而且都是ArrayList,感觉有这个玩意就够了.ArrayList是用于实现动态数组的包装工具类,这样写代码的时候就可以拉进 ...
- Java版本:识别Json字符串并分隔成Map集合
前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些 ...
- MapReduce剖析笔记之八: Map输出数据的处理类MapOutputBuffer分析
在上一节我们分析了Child子进程启动,处理Map.Reduce任务的主要过程,但对于一些细节没有分析,这一节主要对MapOutputBuffer这个关键类进行分析. MapOutputBuffer顾 ...
- MapReduce剖析笔记之七:Child子进程处理Map和Reduce任务的主要流程
在上一节我们分析了TaskTracker如何对JobTracker分配过来的任务进行初始化,并创建各类JVM启动所需的信息,最终创建JVM的整个过程,本节我们继续来看,JVM启动后,执行的是Child ...
- MapReduce剖析笔记之五:Map与Reduce任务分配过程
在上一节分析了TaskTracker和JobTracker之间通过周期的心跳消息获取任务分配结果的过程.中间留了一个问题,就是任务到底是怎么分配的.任务的分配自然是由JobTracker做出来的,具体 ...
- MapReduce剖析笔记之三:Job的Map/Reduce Task初始化
上一节分析了Job由JobClient提交到JobTracker的流程,利用RPC机制,JobTracker接收到Job ID和Job所在HDFS的目录,够早了JobInProgress对象,丢入队列 ...
随机推荐
- 在 OSX 下使用 supervisor 管理服务
我为什么想用 supervisor 来管理服务呢?因为我在系统管理上属于处女座+任性的气质. OSX 下办公用的是普通用户,我不想在 root 权限下做过多设置污染我的系统. OSX 下的服务管理我感 ...
- 微软职位内部推荐-Senior Dev Lead - SharePoint
微软近期Open的职位: SharePoint is a multi-billion dollar enterprise business that has grown from an on-prem ...
- Linux第七周学习总结——可执行程序的装载
Linux第七周学习总结--可执行程序的装载 作者:刘浩晨 [原创作品转载请注明出处] <Linux内核分析>MOOC课程http://mooc.study.163.com/course/ ...
- LeetCode 88. 合并两个有序数组
题目: 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m ...
- Alpha冲刺——day7
Alpha冲刺--day7 作业链接 Alpha冲刺随笔集 github地址 团队成员 031602636 许舒玲(队长) 031602237 吴杰婷 031602220 雷博浩 031602634 ...
- XenServer DVSC
DVSC: Distribute Virtual Swithc Controller(分布式虚拟交换机控制器). DVSC是一种逻辑的集中式的虚拟交换机,它能让你控制来自于不同XenServer Ho ...
- Redis 总结精讲
本文围绕以下几点进行阐述 1.为什么使用redis2.使用redis有什么缺点3.单线程的redis为什么这么快4.redis的数据类型,以及每种数据类型的使用场景5.redis的过期策略以及内存淘汰 ...
- 群里提到的IE设置问题 ---B/S 下页面刷新问题
这里面四个选项的含义 下面是每个选项的作用和意义: 1. “每次访问此页时检查”选项表示浏览器每次访问一个页面时,不管浏览器是否缓存过此页面,都要向服务器发出访问请求.这种设置的优点是实时性很强,肯定 ...
- 消息队列1:RabbitMQ解析并基于Springboot实战
RabbitMQ简介 AMQP:Advanced Message Queue,高级消息队列协议.它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产 ...
- Servlet 生命周期、工作原理-是单实例多线程
Servelet是单实例多线程的 参考:servlet单实例多线程模式 一.Servlet生命周期 大致分为4部:Servlet类加载-->实例化-->服务-->销毁 1.Web C ...