题意:

       可以这样理解,有n快方形积木,一开始都是单独的放到哪,然后有两种操作

1 M a b 把a所在的那一堆落到b所在那一堆的上面(一开始自己是一堆)

2 C a 问a下面有多少个积木

思路: 

       感觉很久以前杭电上见过这个题目,比较简单的带权并查集,我们可以维护两个权来满足要求,第一个就是记录集合元素个数,就是合并的时候更新a所在的祖宗节点的距离权值,第二个权值就是距离权值,记录每个元素距离根节点的距离,然后更新就是简单更新没啥说的,还有就是简简单单敲完提交后WA了一发,哎!丢脸,还好不是比赛,让我想起了有一场亚洲赛的水题我果断敲完,然后上去1WA。这个题目我WA是因为忘记了输出距离权值前要先查询一下,也就是更新一下,因为用了路径压缩,路径压缩的最理想状态是一个点,四周连着所有本集合的其他点,但是要想把一个路径上压缩成一对多,起码要查询就是更新一便,因为在动态的更新的时候当前所有状态并是不理想路径压缩后的状态,这个自己画画很容易理解,哎!记得当时还经常给小学弟讲这个问题呢!。

#include<stdio.h>

#define N 30000 + 10

int mer[N] ,sum[N] ,s_x[N];

int Finds(int x)

{

    if(x == mer[x]) return x;

    int t = mer[x];

    mer[x] = Finds(mer[x]);

    s_x[x] += s_x[t];

    return mer[x];

}

int main ()

{

    int m ,i ,x ,y ,a ,b;

    char str[5];

    for(i = 1 ;i <= 30000 ;i ++)

    s_x[i] = 0 ,sum[i] = 1 ,mer[i] = i;

    scanf("%d" ,&m);

    for(i = 1 ;i <= m ;i ++)

    {

        scanf("%s" ,str);

        if(str[0] == 'M')

        {

            scanf("%d %d" ,&a ,&b);

            x = Finds(a);

            y = Finds(b);

            s_x[x] = sum[y];

            sum[y] += sum[x];

            mer[x] = y;

        }

        else

        {

            scanf("%d" ,&a);

            Finds(a);

            printf("%d\n" ,s_x[a]);

        }

    }

    return 0;

}

POJ1988(带权并查集,搬砖块)的更多相关文章

  1. bzoj3376/poj1988[Usaco2004 Open]Cube Stacking 方块游戏 — 带权并查集

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3376 题目大意: 编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方 ...

  2. 并查集——poj1988(带权并查集中等)

    一.题目回顾 题目链接:Cube Stacking 题意:有n个箱子,初始时每个箱子单独为一列:接下来有p行输入,M, x, y 或者 C, x: 对于M,x,y:表示将x箱子所在的一列箱子搬到y所在 ...

  3. [NOIP摸你赛]Hzwer的陨石(带权并查集)

    题目描述: 经过不懈的努力,Hzwer召唤了很多陨石.已知Hzwer的地图上共有n个区域,且一开始的时候第i个陨石掉在了第i个区域.有电力喷射背包的ndsf很自豪,他认为搬陨石很容易,所以他将一些区域 ...

  4. 【bzoj3376-方块游戏】带权并查集

    题意: n块积木,m个操作或询问.每次移动积木的时候,约翰会选择两块积木X,Y,把X搬到Y的上方.如果X已经和其它积木叠在一起了,那么应将这叠积木整体移动到Y的上方:如果Y已经和其它积木叠在一起了的, ...

  5. POJ 1988 Cube Stacking( 带权并查集 )*

    POJ 1988 Cube Stacking( 带权并查集 ) 非常棒的一道题!借鉴"找回失去的"博客 链接:传送门 题意: P次查询,每次查询有两种: M x y 将包含x的集合 ...

  6. 浅谈并查集&种类并查集&带权并查集

    并查集&种类并查集&带权并查集 前言: 因为是学习记录,所以知识讲解+例题推荐+练习题解都是放在一起的qvq 目录 并查集基础知识 并查集基础题目 种类并查集知识 种类并查集题目 并查 ...

  7. POJ 1703 Find them, Catch them(带权并查集)

    传送门 Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 42463   Accep ...

  8. poj1417 带权并查集 + 背包 + 记录路径

    True Liars Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2713   Accepted: 868 Descrip ...

  9. poj1984 带权并查集(向量处理)

    Navigation Nightmare Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 5939   Accepted: 2 ...

随机推荐

  1. Java 语言基础 01

    语言基础·一级 什么是计算机? 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备.由硬件和软件所组成,没有安装任何软件的计算机称 ...

  2. SQL 性能起飞了!

    直接上干货 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及order by涉及的列上建立索引. 应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值 ...

  3. [源码分析] 消息队列 Kombu 之 Consumer

    [源码分析] 消息队列 Kombu 之 Consumer 目录 [源码分析] 消息队列 Kombu 之 Consumer 0x00 摘要 0x01 综述功能 0x02 示例代码 0x03 定义 3.1 ...

  4. 王兴:为什么中国的 ToB 企业都活得这么惨?

    本文节选自美团创始人王兴的内部讲话.在讲话中,王兴罕见地分享了他对全球和中国宏观经济的理解,谈了他对 TO B 业务的深度思考. 我们今天讲一下餐饮生态业务部,以及对我们整个公司在整个业务发展过程中的 ...

  5. [换根DP]luogu P3647 [APIO2014]连珠线

    题面 https://www.luogu.com.cn/problem/P3647 不重复地取树中相邻的两条边,每次得分为两条边权和,问最大得分 分析 容易想到状态 f[i][0/1] 分别表示 i ...

  6. 我叫小M,立志建立MySQL帝国。

    我是小M,我在卡拉巴拉星球. 我喜欢数据,我立志成为一个数据管理者. 所以我来 Y 公司应聘,听说他们的数据量挺大的. 面试过程还是挺简单的. 我用 007 这三个数字就轻易打败了一堆吹嘘 996 的 ...

  7. SFDC 利用Schema.Describe来取得Picklist所有的选项

    Salesforce的开发语言Apex与Java极为类似.也有封装,基础,多态特性. 并且也能 反射,Object的属性和Field属性. 今天主要记录的是一个需求:Visualforce Page或 ...

  8. Java进阶专题(二十八) Service Mesh初体验

    前言 ​ ⽬前,微服务的架构⽅式在企业中得到了极⼤的发展,主要原因是其解决了传统的单体架构中存在的问题.当单体架构拆分成微服务架构就可以⾼枕⽆忧了吗? 显然不是的.微服务架构体系中同样也存在很多的挑战 ...

  9. oCPC中转化率模型与校准

    翻看日历时间已经来到了2021年,也是共同战役的第二年,许久没有更新文章了,在与懒惰进行过几次斗争都失利之后,今天拿出打工人最后的倔强,终于收获了一场胜利.闲话不多说,今天咱们重点聊聊oCPC中转化率 ...

  10. 抗DDOS应急预案实践-生产环境总结-建议必看

    一.首先摸清楚环境与资源 为DDoS应急预案提供支撑 所在的网络环境中,有多少条互联网出口?每一条带宽多少? 每一条互联网出口的运营商是否支持DDoS攻击清洗,我们是否购买,或可以紧急试用?当发生DD ...