bzoj3376 [Usaco2004 Open]Cube Stacking 方块游戏
来源:互联网 发布:淘宝客服后台操作 编辑:程序博客网 时间:2024/05/24 03:21
Description
约翰和贝茜在玩一个方块游戏.编号为
游戏开始后,约翰会给贝茜发出
- 移动
(M) : 将包含X 的立方柱移动到包含Y 的立方柱上. - 统计
(C) : 统计名含X 的立方柱中,在X 下方的方块数目
写个程序帮贝茜完成游戏.
Input
第
输入保证不会有将立方柱放在自己头上的指令.
Output
每一行,对于每个统计指令,输出其结果.
Sample Input
6
M 1 6
C 1
M 2 4
M 2 6
C 3
C 4
Sample Output
1
0
2
Solution
带权并查集。记录三个信息,
#include<bits/stdc++.h>using namespace std;#define N 100001inline int read() { int x = 0, flag = 1; char ch = getchar(); while (!isdigit(ch)) { if (!(ch ^ '-')) flag = -1; ch = getchar(); } while (isdigit(ch)) x = (x << 1) + (x << 3) + ch - '0', ch = getchar(); return x * flag;}inline void write(int x) { if (!x) { putchar('0'); return; } if (x < 0) putchar('-'), x = -x; char buf[30] = ""; int top = 0; while (x) buf[++top] = x % 10 + '0', x /= 10; while (top) putchar(buf[top--]);}int fa[N], dn[N], dis[N];int find(int x) { if (fa[x] ^ x) { int y = fa[x]; fa[x] = find(y), dis[x] += dis[y], dn[x] = dn[y]; } return fa[x];}int main() { int q = read(); rep(i, 1, q) fa[i] = dn[i] = i, dis[i] = 0; while (q--) { char s[5]; scanf("%s", s); if (!(s[0] ^ 'M')) { int x = read(), y = read(), fx = find(x), fy = find(y); fa[fy] = fx, dis[fy] = dis[dn[fx]] + 1, dn[fx] = dn[fy]; find(dn[x]), find(dn[y]); } else { int x = read(); find(x); write(dis[dn[x]] - dis[x]), puts(""); } } return 0;}
阅读全文
0 0
- bzoj3376 [Usaco2004 Open]Cube Stacking 方块游戏
- bzoj3376/poj1988[Usaco2004 Open]Cube Stacking 方块游戏
- POJ 1988/bzoj3376[Usaco2004 Open]Cube Stacking 方块游戏
- bzoj3376/poj1988[Usaco2004 Open]Cube Stacking 方块游戏 — 带权并查集
- 3376: [Usaco2004 Open]Cube Stacking 方块游戏
- BZOJ 3376: [Usaco2004 Open]Cube Stacking 方块游戏
- bzoj 3376: [Usaco2004 Open]Cube Stacking 方块游戏 带权并查集
- usaco 2004 Open Cube Stacking 堆方块 题解
- Cube Stacking
- Cube Stacking
- Cube Stacking
- Cube Stacking
- Cube Stacking
- Cube Stacking
- Cube Stacking
- Cube Stacking
- Cube Stacking
- Cube Stacking
- Eclipse 推荐字体YaHei.Consolas安装配置说明
- 状态码定义
- 完美解决angularjs的ng-click事件不起作用问题
- HBase regions分布不均匀的解决
- CMake交叉编译配置
- bzoj3376 [Usaco2004 Open]Cube Stacking 方块游戏
- 透彻理解匿名函数
- Qt使用Windows Api模拟鼠标单击双击滚轮事件
- 建造者模式
- HDU 1019 Least Common Multiple(三个注意的点)
- html中判断phone与pc的ce
- myeclipse下src/main/resources/META-INF下的资源文件不会编译到classpath下
- 【演讲实录】金融级数据库技术与实践
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字