Cube Stack

有一点lazy思想,设三个数组cnt代表它以下的有多少个元素(直到栈底),top[x]代表x所在栈的栈顶元素,dad[x]代表x所在栈的栈底元素,先寻找父亲,然后递归更新累加cnt,找父亲的时候更新cnt,对于一个元素,再用之前一定要找父亲,这样才会是真的cnt。

#include<iostream>
#include<cstdio>
using namespace std; int top[],cnt[],dad[]; int p; void Cin(int &x)
{
char c=getchar();x=;
while(c<''||c>'')c=getchar();
while(c<=''&&c>='')x=x*+c-'',c=getchar();
} void Cout(int x)
{
if(x>) Cout(x/);
putchar(x%+'');
} int getfather(int x)
{
if(dad[x]==x)
return x;
int f=dad[x];
dad[x]=getfather(dad[x]);
cnt[x]+=cnt[f];
return dad[x];
} void merge(int x,int y)
{
int F=getfather(x);
int f=getfather(y);
if(F!=f)
{
dad[F]=f;
int t=getfather(top[f]);
cnt[F]=cnt[top[f]]+;
top[f]=top[F];
}
} int main()
{
for(int i=;i<=;i++)
{
dad[i]=i;
top[i]=i;
}
cin>>p;
char c;
int x,y;
for(int i=;i<=p;i++)
{
cin>>c;
if(c=='M')
{
Cin(x),Cin(y);
merge(x,y);
}
else
{
cin>>x;
int t=getfather(x);
Cout(cnt[x]),putchar('\n');
}
}
return ;
}

Cube Stack的更多相关文章

  1. Day 2 下午

    [POJ 3468]A Simple Problem with Integers给定Q个数A1, ..., AQ,多次进行以下操作:1.对区间[L, R]中的每个数都加n.2.求某个区间[L, R]中 ...

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

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

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

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

  4. Cube Stacking

    Cube Stacking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 21350 Accepted: 7470 Case T ...

  5. cdoj 80 Cube 水题

    Cube Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/80 Descrip ...

  6. 【HDOJ】4801 Pocket Cube 的几种解法和优化

    1. 题目描述给定一个$2 \times 2 \times 2$的魔方,当某个面上的4个小块颜色均相同时,称这个面为complete.求对这个魔方进行$n \in [1,7]$次旋转(沿某个面顺时针或 ...

  7. PKU Online Judge 1054:Cube (设置根节点)

    1054:Cube 总时间限制:   1000ms 内存限制: 131072kB   描述 Delayyy君很喜欢玩某个由Picks编写的方块游戏,游戏在一个由单位格组成的棋盘上进行. 游戏的主角是一 ...

  8. 【POJ 1988】 Cube Stacking (带权并查集)

    Cube Stacking Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)id ...

  9. Cube Stacking(并差集深度+结点个数)

    Cube Stacking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 21567   Accepted: 7554 Ca ...

随机推荐

  1. mysql 架构 ~ PXC5.7.20安装尝试

    简介:今天来尝试下 pxc 5.7.20安装1 环境安装   yum install -y git scons gcc gcc-c++ openssl check cmake bison boost- ...

  2. Maven继承

    继承为了消除重复,可以把pom 中很多相同的配置提取出来:如:grouptId, version 等. 在使用的时候子工程直接继承父工程的依赖版本号,子工程中不再需要指定具体版本号,方便统一管控项目的 ...

  3. malloc 函数详解【转】

    转自:https://www.cnblogs.com/Commence/p/5785912.html 很多学过C的人对malloc都不是很了解,知道使用malloc要加头文件,知道malloc是分配一 ...

  4. 带你玩转Visual Studio——带你理解微软的预编译头技术

    原文地址:http://blog.csdn.net/luoweifu/article/details/49010627 不陌生的stdafx.h 还记得带你玩转Visual Studio——带你新建一 ...

  5. 【bzoj2653】【middle】【主席树+二分答案】

    Description 一个长度为 n 的序列 a ,设其排过序之后为 b ,其中位数定义为 b[n/2] ,其中 a,b 从 0 开始标号 , 除法取下整. 给你一个长度为 n 的序列 s .回答 ...

  6. C# 文件拖放

    将控件的属性AllowDrop设置为true,然后添加DragDrop.DragEnter时间处理函数 private void FormMain_DragEnter(object sender, D ...

  7. Linux常用命令2(远程文件下载+查看文件内容)

    一.远程文件下载的两种方法:ftp命令 + scp命令 ftp命令: 服务器若安装了ftp Server,另外一台Linux可以使用ftp的client程序来进行文件的远程拷贝读取下载和写入上载. 1 ...

  8. Java集合(Collection)综述

    1.集合简介 数学定义:一般地,我们把研究对象统称为元素.把一些元素组成的总体叫做集合. java集合定义:集合就是一个放数据的容器,准确的说是放数据对象引用的容器. java中通用集合类存放于jav ...

  9. linux 取消笔记本触摸键

    关闭触摸 sudo rmmod psmouse 关闭触摸和按键 sudo modprobe -r psmouse 打开 sudo modprobe psmouse

  10. liunx java环境搭建

    1.安装jdk apt install openjdk--jdk-headless //可以直接输入javac会有提示