Cube Stack
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的更多相关文章
- Day 2 下午
[POJ 3468]A Simple Problem with Integers给定Q个数A1, ..., AQ,多次进行以下操作:1.对区间[L, R]中的每个数都加n.2.求某个区间[L, R]中 ...
- poj.1988.Cube Stacking(并查集)
Cube Stacking Time Limit:2000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64u Submi ...
- POJ 1988 Cube Stacking(带权并查集)
Cube Stacking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 23678 Accepted: 8299 Ca ...
- Cube Stacking
Cube Stacking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 21350 Accepted: 7470 Case T ...
- cdoj 80 Cube 水题
Cube Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/80 Descrip ...
- 【HDOJ】4801 Pocket Cube 的几种解法和优化
1. 题目描述给定一个$2 \times 2 \times 2$的魔方,当某个面上的4个小块颜色均相同时,称这个面为complete.求对这个魔方进行$n \in [1,7]$次旋转(沿某个面顺时针或 ...
- PKU Online Judge 1054:Cube (设置根节点)
1054:Cube 总时间限制: 1000ms 内存限制: 131072kB 描述 Delayyy君很喜欢玩某个由Picks编写的方块游戏,游戏在一个由单位格组成的棋盘上进行. 游戏的主角是一 ...
- 【POJ 1988】 Cube Stacking (带权并查集)
Cube Stacking Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)id ...
- Cube Stacking(并差集深度+结点个数)
Cube Stacking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 21567 Accepted: 7554 Ca ...
随机推荐
- mysql 架构 ~ PXC5.7.20安装尝试
简介:今天来尝试下 pxc 5.7.20安装1 环境安装 yum install -y git scons gcc gcc-c++ openssl check cmake bison boost- ...
- Maven继承
继承为了消除重复,可以把pom 中很多相同的配置提取出来:如:grouptId, version 等. 在使用的时候子工程直接继承父工程的依赖版本号,子工程中不再需要指定具体版本号,方便统一管控项目的 ...
- malloc 函数详解【转】
转自:https://www.cnblogs.com/Commence/p/5785912.html 很多学过C的人对malloc都不是很了解,知道使用malloc要加头文件,知道malloc是分配一 ...
- 带你玩转Visual Studio——带你理解微软的预编译头技术
原文地址:http://blog.csdn.net/luoweifu/article/details/49010627 不陌生的stdafx.h 还记得带你玩转Visual Studio——带你新建一 ...
- 【bzoj2653】【middle】【主席树+二分答案】
Description 一个长度为 n 的序列 a ,设其排过序之后为 b ,其中位数定义为 b[n/2] ,其中 a,b 从 0 开始标号 , 除法取下整. 给你一个长度为 n 的序列 s .回答 ...
- C# 文件拖放
将控件的属性AllowDrop设置为true,然后添加DragDrop.DragEnter时间处理函数 private void FormMain_DragEnter(object sender, D ...
- Linux常用命令2(远程文件下载+查看文件内容)
一.远程文件下载的两种方法:ftp命令 + scp命令 ftp命令: 服务器若安装了ftp Server,另外一台Linux可以使用ftp的client程序来进行文件的远程拷贝读取下载和写入上载. 1 ...
- Java集合(Collection)综述
1.集合简介 数学定义:一般地,我们把研究对象统称为元素.把一些元素组成的总体叫做集合. java集合定义:集合就是一个放数据的容器,准确的说是放数据对象引用的容器. java中通用集合类存放于jav ...
- linux 取消笔记本触摸键
关闭触摸 sudo rmmod psmouse 关闭触摸和按键 sudo modprobe -r psmouse 打开 sudo modprobe psmouse
- liunx java环境搭建
1.安装jdk apt install openjdk--jdk-headless //可以直接输入javac会有提示