#include <cstdio>
#include <iostream>
#include <set>
using namespace std;
const int N = 1e5+; struct Block {
long long begin, all_size; //root起始, root子树总大小
long long dis, size, f; //距离父节点起始距离, 自身大小, 父节点标号
bool operator <(const Block &rhs) const {
return begin < rhs.begin;
}
};
Block block[N]; int findf(int x) {//找到标号x的根节点标号, 并让x直接连向根节点
if(x == block[x].f) return x;
int rt = findf(block[x].f);
int f = block[x].f;
block[x].dis += block[f].dis;
block[x].f = block[f].f;
return rt;
}
void merge(int x, int y) { //将标号y所在的子树merge到标号x所在的子树
int fx = findf(x), fy = findf(y);
if(fx == fy) return ;
block[fy].dis = block[fx].all_size;
block[fy].f = fx;
block[fx].all_size += block[fy].all_size;
} set<Block> se; int main() {
int n, k, h, x, tot = ;
char op;
scanf("%d", &n);
for(int i = ; i <= n; i++) {
scanf(" %c", &op);
if(op == 'I') {
scanf("%d%d", &k, &h);
int ID = ++tot;
block[tot] = {k, h, , h, tot};
if(se.empty()) {se.insert(block[ID]); continue ;} auto it = se.upper_bound(block[ID]);
if(it == se.begin()) {
while(it != se.end() && block[ID].begin+block[ID].all_size >= it->begin) {
int f = it->f;
se.erase(it++);
merge(ID, f);
}
se.insert(block[ID]);
}
else { // it != se.begin()
auto tmp = it;
--tmp;
if(tmp->begin + tmp->all_size >= k) {
int f = tmp->f;
se.erase(tmp);
merge(f, tot);
ID = f;//////////////////////////////////////////
}
while(it != se.end() && block[ID].begin+block[ID].all_size >= it->begin) {
int f = it->f;
se.erase(it++);
merge(ID, f);
}
se.insert(block[ID]);
}
}
else {
scanf("%d", &x);
int rt = findf(x);
long long L = block[x].dis+block[rt].begin;
long long R = L+block[x].size-;
printf("%I64d %I64d\n", L, R);
}
}
return ;
} /*
5
I 1 5
I 8 10
I 5 5
Q 3
Q 2
*/

hihocoder1711 评论框排版[并查集+set]的更多相关文章

  1. HDU 1272 小希的迷宫(并查集) 分类: 并查集 2015-07-07 23:38 2人阅读 评论(0) 收藏

    Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就 ...

  2. Hdu 2473(并查集删除操作) Junk-Mail Filter

    有木有非常吊 加强 加强版   啊  ,看了都不敢做了   .后来先做了食物链这个我还是看过的.但还是A不掉,没明确神魔意思 .总而言之.大牛的博客是个好东西.我就那么看了一下,还是不懂怎莫办啊,哎, ...

  3. <hdu - 1272> 小希的迷宫 并查集问题 (注意特殊情况)

     本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 Problem Description: 上次Gardon的迷宫城堡小希玩了很久(见Probl ...

  4. <hdu - 1232> 畅通工程 并查集问题 (注意中的细节)

    本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1232  结题思路:因为题目是汉语的,那我就不解释题意了,要求的是最少建设的道路,我们可以用并查集来做这 ...

  5. 并查集+bfs+暴力滑窗 Codeforces Round #356 (Div. 2) E

    http://codeforces.com/contest/680/problem/E 题目大意:给你一个n*n的图,然后图上的 . (我们下面都叫做‘点’)表示可以走,X表示不能走,你有如下的操作, ...

  6. Tarjan 模板,高级并查集

    第一个模板有误!!!! 请见谅!!! 要怪就怪HDU吧,竟然让我过了 第二个模板是正确的.请翻到下面看更新 HDU 1269 评论区居然有人说用并查集过了,其实回想一下 求无向图的连通分量,就是并查集 ...

  7. 搭桥|codevs1002|最小生成树|Prim|并查集|Elena

    1002 搭桥  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 有一矩形区域的城市中建筑了若干建筑物,如果某两个单元格有一个点 ...

  8. 【洛谷】P1892 团伙(并查集)+ 求助

    题目描述 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友. 两个强盗是同一团伙的 ...

  9. Luogu P2391 白雪皑皑 && BZOJ 2054: 疯狂的馒头 并查集

    4月的时候在luogu上做过 白雪皑皑 这道题,当时一遍AC可高兴了qwq,后来去了个厕所,路上忽然发现自己的做法是错的qwq...然后就咕咕了qwq 今天看到了 疯狂的馒头 ,发现一毛一样OvO.. ...

随机推荐

  1. EventBus的基本使用步骤

    为什么要使用EventBus 当我们进行项目开发的时候,往往是需要应用程序的各组件间进行通信,比如在子线程中进行请求数据,当数据请求完毕后通过Handler或者是广播通知UI, 通常两个Activit ...

  2. Unity学习笔记(3):一些常用API和应用场景

    Mathf.Lerp(float a,float b,float t)插值函数,当a < b时往a中插入t,以此来实现颜色,声音等渐变效果. GameObject.FindWithTag(str ...

  3. python包管理工具pip

    你可以使用一个名为 pip 的程序来安装.升级和移除软件包.默认情况下 pip 将从 Python Package Index <https://pypi.org> 安装软件包.你可以在浏 ...

  4. mysql的安装教程-【linux】

    先卸载系统自带的mysql,停止mysql:service mysql stop 1.查找以前是否装有mysql命令:rpm -qa|grep -i mysql可以看到mysql的几个包:qt-mys ...

  5. Datawhale MySQL 训练营 Task5

    数据导入导出 导入table http://www.runoob.com/mysql/mysql-database-import.html 导出table http://www.runoob.com/ ...

  6. ats 转发代理

    ats是一个通用代理,可配置为反向和转发代理; 转发代理可以用作基础架构中的中央工具来访问web, 它可以与缓存结合使用以降低 总体带宽使用率.转发代理充当本地网络上的客户端浏览器与这些客户端访问的所 ...

  7. openstack系列文章(二)

    学习openstack的系列文章-keystone openstack 架构 Keystone 基本概念 Keystone 工作流程 Keystone Troubleshooting 1.  open ...

  8. (二)Hyperledger Fabric 1.1安装部署-Fabric Samples

    Hyperledger Fabric Samples是官方推荐的First Network,对于熟悉fabric和测试基础环境很有好处. Fabric Samples源码下载:使用git下载源码,进入 ...

  9. tty命令详解

    基础命令学习目录首页 原文链接:http://blog.chinaunix.net/uid-9525959-id-2001836.html [功能]  打印连接到标准输入的终端的文件名. [描述]  ...

  10. Spring Bean注册解析(二)

           在上文Spring Bean注册解析(一)中,我们讲解了Spring在注册Bean之前进行了哪些前期工作,以及Spring是如何存储注册的Bean的,并且详细介绍了Spring是如何解析 ...