3376: [Usaco2004 Open]Cube Stacking 方块游戏
来源:互联网 发布:无锡软件研究所 编辑:程序博客网 时间:2024/06/05 04:02
题目链接
题目大意:n堆积木,两种操作
1.将x所在的那堆积木移动到y所在的积木之上
2.求所在积木中在x下面的积木的数量
题解:带权并查集
f[x]=y表示x在y上面,即最下面的为根,记录sum[x]表示x所在堆元素个数,维护h[x]表示x到根的距离,也就是询问的答案,然后搞搞就行了
我的收获:带权并查集吼啊
#include <cstdio>#include <iostream>#include <vector>using namespace std;const int M=30000;int m,f[M+5],sum[M+5],h[M+5];int F(int x){ if(x==f[x]) return x; int t=f[x]; f[x]=F(f[x]); h[x]+=h[t];//更新下这个 return f[x];}void merge(int x,int y){ int p=F(x),q=F(y); if(p==q) return ; f[p]=q; h[p]=sum[q];//…… sum[q]+=sum[p],sum[p]=0;//…… }void init(){ cin>>m; for(int i=1;i<=M;i++) f[i]=i,sum[i]=1; char opt[5];int x,y; while(m--){ scanf("%s",opt); if(opt[0]=='M') scanf("%d%d",&x,&y),merge(x,y); else scanf("%d",&x),F(x),printf("%d\n",h[x]);//注意要find一次 }}int main(){ init(); return 0;}
阅读全文
0 0
- 3376: [Usaco2004 Open]Cube Stacking 方块游戏
- bzoj3376 [Usaco2004 Open]Cube Stacking 方块游戏
- BZOJ 3376: [Usaco2004 Open]Cube Stacking 方块游戏
- bzoj3376/poj1988[Usaco2004 Open]Cube Stacking 方块游戏
- POJ 1988/bzoj3376[Usaco2004 Open]Cube Stacking 方块游戏
- bzoj 3376: [Usaco2004 Open]Cube Stacking 方块游戏 带权并查集
- bzoj3376/poj1988[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
- Spring初学小笔记1《2017-09-08》
- 【64位】centos7+jdk+mysql+tomcat配置
- hd--1114 存钱罐
- 1665:完美覆盖(4.5算法之动态规划)
- GYM 100488 Construct a Permutation(构造|想法)
- 3376: [Usaco2004 Open]Cube Stacking 方块游戏
- live555 源码分析:播放启动
- HTML省市二级联动
- http协议中 get post区别
- Linux操作系统的进程类型
- 【Ajax】传递Json对象到MVC后台解析
- softmax 导数推导
- 浅谈协方差矩阵
- 管理项目利器-Marven