【传送门:BZOJ3376


简要题意:

  约翰和贝茜在玩一个方块游戏.编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方柱. 游戏开始后,约翰会给贝茜发出P(1≤P≤100000)个指令.指令有两种:

  1.移动(M):将包含X的立方柱移动到包含Y的立方柱上.

  2.统计(C):统计名含X的立方柱中,在X下方的方块数目. 写个程序帮贝茜完成游戏.


输入格式:

  • 第一行:一个整数Q, 1 ≤ Q ≤ 100000

  • 第二行到Q + 1 行:每行描述一个事件,表示约翰的一个移动操作,或贝西的一个查询,首先 有一个大写字母:

  – 如果字母是M,随后会有两个整数X 和Y ,约翰把积木X 移动到Y 的上方,1 ≤ X; Y ≤ N,保证移动之前X 和Y 不会在同一堆积木里;

  – 如果字母是C,随后有一个整数T,表示贝西想知道在积木T 的下方还有多少其它积木, 1 ≤ T ≤ N


输出格式:

  • 对每个来自贝西的查询,输出正确答案,用换行符分隔


样例输入:

6

M 1 6

C 1

M 2 4

M 2 6

C 3

C 4


样例输出:

1

0

3


样例解释:

  第一次查询时,1 下只有一个6;第二次查询 时,3 下没有任何积木;第三次查询时,4 下有两块积木:1 和6


题解:

  一开始想的时候,想到积木搭在积木上面,就想用差分来做,结果想着想着,发现,我去,带权并查集(我还是太弱了)

  做法就是在并查集中维护每个集合的最上面的点、最小面的点、还有每个点与它的集合中最上面的点的距离


参考代码:

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
int fa[],v[];
int d[];
int findfa(int x)
{
if(x!=fa[x])
{
int y=fa[x];
fa[x]=findfa(y);
v[x]+=v[y];
d[x]=d[y];
}
return fa[x];
}
int main()
{
int n;
scanf("%d",&n);
char st[];
memset(v,,sizeof(v));
for(int i=;i<=;i++) fa[i]=d[i]=i;
for(int i=;i<=n;i++)
{
scanf("%s",st+);
if(st[]=='M')
{
int x,y;
scanf("%d%d",&x,&y);
int fx=findfa(x),fy=findfa(y);
fa[fy]=fx;
v[fy]=v[d[x]]+;
d[fx]=d[fy];
findfa(d[x]);findfa(d[y]);
}
else
{
int x;
scanf("%d",&x);
int fx=findfa(x);
printf("%d\n",v[d[x]]-v[x]);
}
}
return ;
}

BZOJ3376: [Usaco2004 Open]Cube Stacking 方块游戏的更多相关文章

  1. 初涉「带权并查集」&&bzoj3376: [Usaco2004 Open]Cube Stacking 方块游戏

    算是挺基础的东西 Description     约翰和贝茜在玩一个方块游戏.编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方柱.    游戏开始后,约翰会给贝茜发出P(1≤P ...

  2. [Usaco2004 Open]Cube Stacking 方块游戏

    题面:     约翰和贝茜在玩一个方块游戏.编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方柱.    游戏开始后,约翰会给贝茜发出P(1≤P≤100000)个指令.指令有两种 ...

  3. bzoj3376/poj1988[Usaco2004 Open]Cube Stacking 方块游戏 — 带权并查集

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3376 题目大意: 编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方 ...

  4. 【BZOJ 3376】[Usaco2004 Open]Cube Stacking 方块游戏 带权并查集

    这道题一开始以为是平衡树结果发现复杂度过不去,然后发现我们一直合并而且只是记录到最低的距离,那么就是带权并查集了,带权并查集的权一般是到根的距离,因为不算根要好打,不过还有一些其他的,具体的具体打. ...

  5. bzoj 3376 [Usaco2004 Open]Cube Stacking 方块游戏——带偏移量的并查集

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3376 带偏移量的并查集. #include<iostream> #include ...

  6. BZOJ 3376 [Usaco2004 Open]Cube Stacking 方块游戏(带权并查集)

    题解 #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #in ...

  7. 洛谷P5092 [USACO2004OPEN]Cube Stacking 方块游戏 (带权并查集)

    题目描述 约翰和贝茜在玩一个方块游戏.编号为 1\ldots n 1-n 的 n n ( 1 \leq n \leq 30000 1≤n≤30000 )个方块正放在地上,每个构成一个立方柱. 游戏开始 ...

  8. poj.1988.Cube Stacking(并查集)

    Cube Stacking Time Limit:2000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u Submi ...

  9. POJ 1988 Cube Stacking(带权并查集)

    Cube Stacking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 23678   Accepted: 8299 Ca ...

随机推荐

  1. Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

    解决方法: 1.进入启动文件目录 2.将用户加入到docker 组 sudo gpasswd -a ${USER}  docker 3.使用root用户 sudo su 4. 切换当前用户 su ${ ...

  2. 紫书 习题8-12 UVa 1153(贪心)

    本来以为这道题是考不相交区间, 结果还专门复习了一遍前面写的, 然后发现这道题的区间是不是 固定的, 是在一个范围内"滑动的", 只要右端点不超过截止时间就ok. 然后我就先考虑有 ...

  3. Adobe Flex迷你教程 —Flex4全屏显示

    应用场景 1.播放器 我们经常看视频的时候,需要全屏显示,(在flex中这个视频初始化的时候是嵌入到html的iframe中). 2.监控 如下图所示,大多时候我们的监控用的是flex,而树形菜单和标 ...

  4. Login.hbm.xml

    <?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLI ...

  5. hdu 4496 并查集 逆向 并查集删边

    貌似某大犇说过 正难则反,,, 题目说要对这张图进行删边,然后判断联通块的个数,那么就可以先把所有边都删掉,之后从后往前加边,若加的边两端点不在同一个联通块中, 那么此时联通快个数少一,否则不变 #i ...

  6. P2899 [USACO08JAN]手机网络Cell Phone Network

    P2899 [USACO08JAN]手机网络Cell Phone Networ题目描述 Farmer John has decided to give each of his cows a cell ...

  7. 实验了一下对于struct引用的成员的改动

    今天写代码的时候,不确定struct用引用传递给函数的时候,他的成员在函数里面改变的时候,是否能影响到外面. 实验了一下 #include <stdio.h> #include <s ...

  8. CSS中的相关概念

    CSS的几个概念: 包括块:一个元素的"布局上下文".对于正常的HTML文本流中的一个元素,包括块由近期的块级祖先框.表单元格或行内块祖先框的内容边界(content edge)构 ...

  9. oracle学习 第一章 简单的查询语句 ——03

    1.1最简单的查询语句 例 1-1 SQL> select * from emp; 例 1-1 结果 这里的 * 号表示全部的列.它与在select 之后列出全部的列名是一样的.查询语句以分号( ...

  10. 双系统给ubuntu增加分区

    http://www.th7.cn/system/lin/201506/106338.shtml http://www.linuxidc.com/Linux/2012-06/61983.htm 因为本 ...