博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1988 Cube Stacking(并查集+路径压缩)
阅读量:4497 次
发布时间:2019-06-08

本文共 756 字,大约阅读时间需要 2 分钟。

题目链接:

并查集的题目

【题目大意】

有n个元素,開始每一个元素自己 一栈。有两种操作,将含有元素x的栈放在含有y的栈的顶端,合并为一个栈。

另外一种操作是询问含有x元素以下有多少个元素。

用sum数组储存每一个栈中的元素个数。每次合并的时候将sum加到 父亲节点。也就是每一个栈的最底部。

用under数组储存当前节点以下有多少元素。每次合并的时候,就能够将顶端元素的under赋值为父节点也就是栈最底部的sum。

void Union(int x,int y){	int xr = find(x);	int yr = find(y);	if(xr==yr) return;	father[xr]=yr;	under[xr]=sum[yr];	sum[yr]+=sum[xr];}

在查询的时候,运用递归的思想。从底部往上加under。

int find(int x){	if(x==father[x])		return father[x];	int tmp = find(father[x]);	under[x]+=under[father[x]]; //细致想想	father[x]=tmp;	return tmp;}

【源码】

#include 
//父亲节点在栈的底部#include
using namespace std;const int maxn = 30000+10;int father[maxn];int under[maxn];int sum[maxn];void init(){ for(int i=0;i

转载于:https://www.cnblogs.com/cxchanpin/p/7149993.html

你可能感兴趣的文章
2014-软件工程基础-总结
查看>>
[linux]segvcatch简单使用
查看>>
webpack之傻瓜式教程及前端自动化入门
查看>>
Python学习-5.Python的变量与数据类型及字符串的分割与连接
查看>>
【TypeScript】TypeScript 学习 2——接口
查看>>
Failed to sync Gradle project 'XX'错误解决
查看>>
vue-router 重难点总结笔记
查看>>
GDI+绘图
查看>>
团队项目冲刺第七天
查看>>
数据库的持续集成和版本控制
查看>>
nginx反向代理nginx,RealServer日志打印真实ip
查看>>
Visual Studio蛋疼问题解决(1)
查看>>
98%的人没解出的德国面试逻辑题
查看>>
mysql 复制表结构 / 从结果中导入数据到新表
查看>>
fiddler---使用方法2--抓取其他电脑数据包
查看>>
python基础教程——切片
查看>>
android 获取坐标【转】
查看>>
Windows Text Copyer 1.1绿色版
查看>>
内存重叠strcpy\memcpy
查看>>
球的移动(move)
查看>>