博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P2161 [SHOI2009]会场预约
阅读量:6648 次
发布时间:2019-06-25

本文共 1213 字,大约阅读时间需要 4 分钟。

这一题是用来练习stl的,,,

stl的set固然很方便, 但是在c++98里erase好像是没有返回值的, 不能像c++11一样

it = S.erase(it);

所以c++98里删掉以后最好重新找以防RE.

具体在这道题中, 就是每一次lower_bound以后看看能不能删前面的或者后面的.
c++98真是反人类啊...什么时候noip能够用c++11呢.

#include 
#include
#include
#include
#include
#include
using namespace std;typedef pair
P;const int MAXN = 200000 + 10;inline int read(){ char ch = getchar(); int x = 0; while(!isdigit(ch)) ch = getchar(); while(isdigit(ch)) x = x * 10 + ch - '0', ch = getchar(); return x;}int N;set

S;int main(){ // freopen("p2161.in", "r", stdin); // freopen("p2161.out", "w", stdout); cin>>N; while(N--) { char opt; scanf(" %c", &opt); if(opt == 'A') { int l = read(), r = read(); P cur = P(l, r); int cnt = 0; set

::iterator it; while(true) { it = S.lower_bound(cur); bool flag = false; if(it->first <= r && it->second >= l) ++cnt, S.erase(it), flag = true; it = S.lower_bound(cur); if(it != S.begin()) { --it; if(it->first <= r && it->second >= l) ++cnt, S.erase(it), flag = true; } if(!flag) break; } S.insert(cur); printf("%d\n", cnt); } else printf("%d\n", (int)S.size()); } return 0;}

转载于:https://www.cnblogs.com/wsmrxc/p/9908343.html

你可能感兴趣的文章
C#基础知识整理:C#类和结构(3)
查看>>
SharePoint Server 2010 初始化
查看>>
【我眼中的戴尔转型】(四)惠普之道,月亮的脸悄悄地在改变
查看>>
***S 2012 聚合函数 -- 指定分页示例
查看>>
直播疑难杂症排查(3)— 首开慢
查看>>
某公司机房成功搭建openssh server跳板服务器
查看>>
ADT在線互動教學
查看>>
PowerShell 添加 自定义的ScriptProperty 属性
查看>>
Shell一些例子
查看>>
MySQL 可优化的一些参数详解
查看>>
zabbix监控web页面,以及告警配置
查看>>
C#中传值调用和传引用调用的理解
查看>>
硬盘整数分区最精确地方法(转载)
查看>>
Oracle-压缩数据
查看>>
Exchange Server2010系列之十六:客户端访问方式
查看>>
crawler4j 爬爬知多少
查看>>
记录:Protocol Buffers(protobuf)在Java开发中使用
查看>>
关于Diablo3的历史和现状思考
查看>>
一个tomcat配置多个端口
查看>>
ORACLE审计小结
查看>>