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里面见过,但是文章里面介绍的很详细,但是往往使初学者 ...
随机推荐
- django之runserver命令分析
def inner_run(self, *args, **options):#runserver命令执行的内容 # If an exception was silenced in Management ...
- 如何在notepad++实现代码自动化排版(调用Astyle)
我先介绍这个怎么在notepad++中调用原版的astyle的方法. 在notepad++:运行或是F5, 在输入框中选择astyle.exe所在的目录,什么你没有astyle,下载地址https:/ ...
- delphi ios info.plist
delphi ios info.plist delphi修改info.plist.TemplateiOS.xml文件,然后自动生成project1.info.plist http://docwiki. ...
- 机器学习进阶-图像形态学操作-梯度运算 cv2.GRADIENT(梯度运算-膨胀图像-腐蚀后的图像)
1.op = cv2.GRADIENT 用于梯度运算-膨胀图像-腐蚀后的图像 梯度运算:表示的是将膨胀以后的图像 - 腐蚀后的图像,获得了最终的边缘轮廓 代码: 第一步:读取pie图片 第二步:进行腐 ...
- How to install Redis 3.2 on CentOS 6 and 7
What is Redis? Redis is a flexible open-source, key value data store, used as a database, cache and ...
- MySql.Data.MySqlClient连接MySql
在C#中连接MySql数据库其实是件很简单的事情,但对于刚开始学习C#的朋友来说,问题却是不小,主要原因是相对于ACCESS和MSSql来说,MySql方面的教程文章实在太少,我也是自己摸索好好半天才 ...
- maven的环境变量配置
一: 首先下载maven, 下载地址:http://maven.apache.org/download.html 打开这个连接:选择File下面的apache-maven-3.2.1-bin.zip链 ...
- HBuilder开发APP自动登录时跳过"登录页面"
刚接触开发公司APP项目,用HBuilder开发工具. manifest.json中的入口页面就是"登录页面",现在获取到自动登录状态是true,但是真机联调时"登录页面 ...
- 翻转单链表 leetcode Reverse Linked List
翻转一个单链表.这个题目听说很多次了,总感觉肯定不是什么难题. 现在真的有点好高骛远了!总感觉那种很难的算法题才是难题,这种题没必要做.其实眼高手低啊. 这种easy题,我都不能一遍ac,这遇到白板编 ...
- treeMap 基于JDK 1.8的学习
困惑了很久的红黑树========来个了断吧 本文主要是为了描述旋转的原则,所以,至于红黑树的数据结构,红黑树的基本准则,不在强调,,红黑树困惑的就是这旋转的过程.!!! 画红黑树很简单的画图工具: ...