hihocoder1711 评论框排版[并查集+set]
#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]的更多相关文章
- HDU 1272 小希的迷宫(并查集) 分类: 并查集 2015-07-07 23:38 2人阅读 评论(0) 收藏
Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就 ...
- Hdu 2473(并查集删除操作) Junk-Mail Filter
有木有非常吊 加强 加强版 啊 ,看了都不敢做了 .后来先做了食物链这个我还是看过的.但还是A不掉,没明确神魔意思 .总而言之.大牛的博客是个好东西.我就那么看了一下,还是不懂怎莫办啊,哎, ...
- <hdu - 1272> 小希的迷宫 并查集问题 (注意特殊情况)
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 Problem Description: 上次Gardon的迷宫城堡小希玩了很久(见Probl ...
- <hdu - 1232> 畅通工程 并查集问题 (注意中的细节)
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1232 结题思路:因为题目是汉语的,那我就不解释题意了,要求的是最少建设的道路,我们可以用并查集来做这 ...
- 并查集+bfs+暴力滑窗 Codeforces Round #356 (Div. 2) E
http://codeforces.com/contest/680/problem/E 题目大意:给你一个n*n的图,然后图上的 . (我们下面都叫做‘点’)表示可以走,X表示不能走,你有如下的操作, ...
- Tarjan 模板,高级并查集
第一个模板有误!!!! 请见谅!!! 要怪就怪HDU吧,竟然让我过了 第二个模板是正确的.请翻到下面看更新 HDU 1269 评论区居然有人说用并查集过了,其实回想一下 求无向图的连通分量,就是并查集 ...
- 搭桥|codevs1002|最小生成树|Prim|并查集|Elena
1002 搭桥 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 有一矩形区域的城市中建筑了若干建筑物,如果某两个单元格有一个点 ...
- 【洛谷】P1892 团伙(并查集)+ 求助
题目描述 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友. 两个强盗是同一团伙的 ...
- Luogu P2391 白雪皑皑 && BZOJ 2054: 疯狂的馒头 并查集
4月的时候在luogu上做过 白雪皑皑 这道题,当时一遍AC可高兴了qwq,后来去了个厕所,路上忽然发现自己的做法是错的qwq...然后就咕咕了qwq 今天看到了 疯狂的馒头 ,发现一毛一样OvO.. ...
随机推荐
- Python的requests、greenlet和gevent模块在windows下安装
一.requests模块在windows下安装 Linux系统下requests的安装方法在http://docs.python-requests.org/en/latest/user/install ...
- 如何fork比特币的源码并同步更新到本地
一.首先在Github上fork比特币源码,就会在自己的项目库里创建一份比特币代码的拷贝. 打开https://github.com/bitcoin/bitcoin,点击右上角的“Fok”图标,稍 ...
- Revit开发小技巧-连接类
该类用来连接两个Element.备注一下防止忘记.
- webpack新手入门——配置及安装
webpack 是一个现代 JavaScript 应用程序的静态模块打包器.当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的 ...
- java-POI处理excel文件方法
处理excel文件的开源库有很多,常见的POI.jxls..... 重点分析下POI处理excel的方法: 1.写文件 // 按照行优先进行数据表格的初始化 public static void cr ...
- PropertyGrid中的枚举显示为中文
参考http://www.cnblogs.com/yank/archive/2011/09/17/2179598.html 在上述文档的基础上做了改进.从EnumConverter类派生 显示效果: ...
- 允许使用root远程ssh登录(Ubuntu 16.04)
今天装了ubuntu16和17,发现还是ubuntu16看着顺眼,所以以后决定用ubuntu16, 然后想换语言发现更新失败,所以想换成中国的源,但是vm里面复制粘贴不了,所以想用secureCRT连 ...
- 20145214 《网络对抗技术》 MSF基础应用
20145214 <网络对抗技术> MSF基础应用 1.实验后回答问题--用自己的话解释什么是exploit,payload,encode 如果把MSF比作一把枪的话,payload应该是 ...
- 团队作业7——第二次项目冲刺(Beta版本12.07——12.08)
1.当天站立式会议照片 本次会议在5号公寓3楼召开,本次会议内容:①:熟悉每个人想做的模块.②:根据项目要求还没做的完成. 2.每个人的工作 经过会议讨论后确定了每个人的分工 组员 任务 陈福鹏 实现 ...
- 26_多线程_第26天(Thread、线程创建、线程池)_讲义
今日内容介绍 1.多线程 2.线程池 01进程概念 A:进程概念 a:进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行, 即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能 ...