[Usaco2004 Open]Cube Stacking 方块游戏
2024-09-08 05:20:42
题面:
约翰和贝茜在玩一个方块游戏.编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方柱.
游戏开始后,约翰会给贝茜发出P(1≤P≤100000)个指令.指令有两种:
1.移动(M):将包含X的立方柱移动到包含Y的立方柱上.
2.统计(C):统计名含X的立方柱中,在X下方的方块数目.
写个程序帮贝茜完成游戏.
解法:带权并查集,记录一个底面,顶面,x上面的立方体的个数。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N=;
int n,dep[N],dis[N],fa[N];
int find(int x) {
if(x!=fa[x]) {
int fx=fa[x];
fa[x]=find(fx);
dep[x]=dep[fx];
dis[x]+=dis[fx];
}
return fa[x];
}
inline void merge(int x,int y) {
int fx=find(x),fy=find(y);
fa[fy]=fx;dis[fy]=dis[dep[x]]+;dep[fx]=dep[fy];
find(dep[fx]),find(dep[fy]);
}
int main() {
scanf("%d",&n);
for(int i=;i<N;i++) fa[i]=dep[i]=i;
char opt[];int x,y;
for(int i=;i<=n;i++) {
scanf("%s",opt);
switch (opt[]) {
case 'M' :scanf("%d%d",&x,&y);merge(x,y);break;
case 'C' :scanf("%d",&x);find(x);printf("%d\n",dis[dep[x]]-dis[x]);break;
}
}
}
[Usaco2004 Open]Cube Stacking 方块游戏
最新文章
- Python(八)进程、线程、协程篇
- Python 基础语法学习笔记
- fastJson使用
- Opencv 完美配置攻略(Win8.1 + Opencv 2.4.8 + VS 2013)
- PAT A 1013. Battle Over Cities (25)【并查集】
- 蓝桥T291(BFS + 输出路径)
- mysql之对索引的操作
- 结队开发项目——七巧板NABC需求分析
- 【HDOJ】3316 Mine sweeping
- JVMTI 中间JNI系列功能,线程安全和故障排除技巧
- 51NOD 1220&#160;约数之和 [杜教筛]
- 实例 编辑 .bashrc(不断更新)
- iOS逆向开发(3):锁定APP的目标类与函数 | reveal | lldb | debugserver | 远程调试
- 连接到docker 指定的一个容器中
- web 和 java 资源
- PISQLDAS 查询语句
- innodb表锁情况
- matlab练习程序(异或分类)
- jvm 知识点
- 2018.07.18 洛谷P1171 售货员的难题(状压dp)
热门文章
- LinkedList,ArrayList末尾插入谁效率高?
- 《Spring技术内幕》笔记-第二章 IoC容器的实现
- (OK) Installing Quagga—zebra—configure—make—CentOS7
- Atitit. C# java 的api 文件夹封装结构映射总结
- STM32F103频率和AD採集项目总结
- oc64--协议2@protocol
- 【bzoj2038】[2009国家集训队]小Z的袜子(hose)(细致总结)
- Swift备忘录
- A - High School: Become Human
- VS2015 右侧导航插件地址