set<pair<int,int> >的用法
例题链接:https://vjudge.net/contest/236677#problem/D
题意:首先输入两个数字n,m。n表示有n张桌子,编号从1到n,m表示有m个操作, 然后接下来一行有n个数字,每个数字表示第i张桌子有ni张凳子, 接下来的m个操作里,每个操作有一个字符串str,加一个数字ch, 如果str==in,表示有ch个人的小队要坐下来,然后要我们找到凳子大于等于ch的ni值最小的然后编号最小的桌子(首先保证求所有大于等于ch里ni最小的数字,如果最小的ni有多个,取编号最小的),然后输出桌子编号,如果没有这样的桌子输出-1。当str==out时,表示做在编号为ch的桌子上的小队离开了,又可以坐人了。
这里看了其他的博客说要用set<pair<int,int> >(注意两个> >中间要加空格隔开),因为set会自动升序排列,然而这里每一个元素都是pair,它排列是先排pair里的first,再排second。比如说pair<2,3> pair<2,1> pair<0,6>排列之后是pair<0,6>,pair<2,1>,pair<2,3>。
介绍完排列规则,再自己看一下代码,理解一下就可以了。
#include<iostream>
#include<cstring>
#include<set>
using namespace std;
set<pair<int,int> >ss;
set<pair<int,int> >::iterator it;
int n,m,ch,num[];
char str[];
int main()
{
while(cin>>n>>m)
{
for(int i=;i<=n;i++)
{
cin>>num[i];
ss.insert(make_pair(num[i],i));//插入
}
for(int i=;i<=m;i++)
{
cin>>str>>ch;
if(str[]=='i')
{
it=ss.lower_bound(make_pair(ch,));//找最小的
if(it==ss.end())
cout<<-<<endl;
else
{
cout<<it->second<<endl;
ss.erase(it);//删除
}
}
else if(str[]=='o')
{
ss.insert(make_pair(num[ch],ch));
}
}
}
return ;
}
set<pair<int,int> >的用法的更多相关文章
- set<pair<int,int> > 的运用
In this cafeteria, the N tables are all ordered in one line, where table number 1 is the closest to ...
- binarySearch(int[] a,int fromIndex,int toIndex, int key)的用法
package com.Summer_0420.cn; import java.util.Arrays; /** * @author Summer * binarySearch(int[] a,int ...
- Python中int()函数的用法浅析
int()是Python的一个内部函数 Python系统帮助里面是这么说的 >>> help(int) Help on class int in module __builti ...
- c++ 中pair类模板的用法详解
pair: 头文件:#include<utility> 类模板:template <class T1, class T2> struct pair 参数:T1是第一个值的数据类 ...
- 数制转换itoa atoi int转字符串 字符串转int string转int int转string
在苦于昨晚最后一个数制转换题,他的转换结果必须是整形数,纳尼?转换完放数组里又要变成整形数.这是什么操作,而且如果是16进制,用字母A,B-表示,在进行运算时都难以计算. 突发奇想,当十进制成立的时候 ...
- C语言复杂声明-void (*signal(int sig, void (*handler)(int)))(int);
问题提出 请分析此声明:void (*signal(int sig, void (*handler)(int)))(int); 求解过程 在对上面的例子作分析之前,我们需要了解C语言的声明优先级,&l ...
- Undefined symbols for architecture i386: "MyGetOpenALAudioData(__CFURL const*, int*, int*, int*)"
今天把apple developer上的例子程序oalTouch中的MyOpenALSupport.h和MyOpenALSupport.c添加到自己的工程中,并在另一个文件xxx.cpp里调用,结果出 ...
- 自定义函数中的参数返回值 “-> (Int -> Int)”的问题
func makeIncrementer() -> (Int -> Int) { func addOne(number: Int) -> Int { + number } retur ...
- void (*f(int, void (*)(int)))(int) 函数解析 转
今天与几个同学看到了一个函数指针定义: void (*f(int, void (*)(int)))(int) 以前在C trap pit fails里面见过,但是文章里面介绍的很详细,但是往往使初学者 ...
随机推荐
- 白鹭引擎 - 事件机制 ( Event, addEventListener, dispatchEvent )
1, 自定义事件, MyEvent class MyEvent extends egret.Event { /** * 一般会定义一个 DATA 字段作为事件 * 绑定事件监听器时, 一般用 类.DA ...
- Linux定时任务 结合PHP实现实时监控
首先说说cron,它是一个linux下的定时执行工具.根用户以外的用户可以使用 crontab 工具来配置 cron 任务. 所有用户定义的 crontab 都被保存在/var/spool/cron ...
- 20165304《Java程序设计》第五周学习总结
教材学习内容总结 第七章 1.内部类 注意内部类和外嵌类的关系: 外嵌类的成员变量和方法在内部类有效 内部类的类体不可以声明static变量和方法.外嵌类的类体可以用内部类声明对象. 内部类仅供它的外 ...
- Linux Centos6.5 SVN服务器搭建 以及客户端安装
转载:http://www.cnblogs.com/mymelon/p/5483215.html /******开始*********/ 系统环境:Centos 6.5 第一步:通过yum命令安装sv ...
- hdoj 1004 学习思路
hdoj 1004题目大概讲的是,将输入的字符串根据输入次数多少,输出出现次数最多的字符串. 题目逻辑很简单,就是需要选择相应的数据结构,看了别人提交的discuss,明显发现可以使用多种数据结构解这 ...
- 在系统中使用Bean Validation验证参数
转自:http://www.importnew.com/18561.html 为什么要使用Bean Validation? 当我们实现某个接口时,都需要对入参数进行校验.例如下面的代码 1 2 3 ...
- Android Studio 上传GitHub项目失败后的一些问题
在Android Studio上传项目到GitHub时候多上传了了一些项目,想删除,但是报诸如 Remote project is already on GitHub 一些乱七八糟的问题,而且,提示p ...
- Hibernate学习笔记1.1(简单插入数据)
Hibernate是把以前的jdbc连接数据库的操作进行了一系列友好的封装,最好只用调用save即可,即将sql语句的这部分操作转化为面向对象的 Hibernate资源准备: 文档目录结构: 1.网址 ...
- IE (第一部分) 浏览器 中 关于浏览器模式和文本模式的困惑
什么是浏览器模式和文本模式? 经常使用IE开发者工具的同学,肯定见过浏览器模式和文本模式,对于这两个名词,综合相关文档解释如下: 浏览器模式(Browser Mode),用于切换IE针对该网页的默认文 ...
- ELK日志平台
1.ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch.Logstash和Kibana三个开源工具组成,不过现在还新增了一个Beats,它是一个轻量级的日志收集处理工具(Age ...