Description
Z学长课间时总是会玩一些小游戏休闲片刻。这天,Z学长找到了这样的一个小游戏:开始时有n个石子(编号从1—n)从左至右依次排开,每个石子各自带有一个权值。有两种操作:
1.将编号为x的石子所在的堆和它那堆右面的堆合并为一堆,记作 “ M x ”,若该堆右侧无其它堆则忽略此次操作;
2.询问编号为x的石子所在的堆中权值最小的石子的权值为多少,记作“ Q x ”;
刚开始时由于所给石子数量过少,所以Z学长仍能应对自如,但越往后的关卡中所给的石子数越来越多,Z学长渐觉力不从心,因此特来求助于聪明的你,聪明的你能否帮学长度过难关?

Input
第1行输入n,q(n<=105,q<=105),表示石子的个数与询问的次数;
第2行给出n个值c[1]~c[n],ci表示编号为i的石子的权值;
其余q行,每行给出题中所描述的两种操作中的一种操作。

Output
对于每个“ Q x ” 询问操作,在单独的一行给出该询问的答案。

Sample Input 1
6 4
1 1 2 3 5 8
Q 1
M 3
M 3
Q 5

Sample Output 1
1
2

借鉴大佬的思路,以权值最少的那一堆作为根节点合并
从t开始到n-1,如果t到t+1在一个堆里就继续,如果不在一个堆里就合并并且跳出循环。

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;int pre[100005], c[100005];int find(int x)
{if (pre[x]==x)return pre[x];return pre[x]=find(pre[x]);
}
void join(int a, int b){int fa=find(a);int fb=find(b);if (fa!=fb &&c[fa]<c[fb])pre[fb]=fa;elsepre[fa]=fb;
}
int main()
{int n, q;scanf("%d %d", &n, &q);for (int i=1; i<=n; i++){scanf("%d", &c[i]);pre[i]=i;}for (int i=1; i<=q; i++){char str[3];int t;scanf("%s %d", str, &t);if (str[0]=='M'){for (; t<=n-1; t++){if (find(t)!=find(t+1)){join(t, t+1);break;}}}else{printf("%d\n", c[find(t)]);}}return 0;
}

QDUOJ 点击此处签到(并查集)相关推荐

  1. ssl2342-打击犯罪【并查集】

    正题 大意 有n个犯罪团伙,他们之间可以相互联系,按照1到n的顺序打击,求最少打击多少个犯罪团伙可以使多个犯罪团伙组成的已经无法与外联系的团伙最大的那个不超过n/2. 解题思路 先储存每条连接的路径, ...

  2. 算法24:LeetCode_并查集相关算法

    目录 题目一:力扣547题,求省份数量 题目二:岛屿数量 题目三:岛屿数量拓展 什么是并查集,举个简单的例子.学生考试通常会以60分为及格分数,我们将60分及以上的人归类为及格学生,而60分以下归类为 ...

  3. 【蓝桥杯】 历届试题 合根植物(并查集)

    历届试题 合根植物 问题描述 w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列).每个格子里种了一株合根植物. 这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与 ...

  4. 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈

    题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...

  5. poj2912(种类并查集+枚举)

    题目:http://poj.org/problem?id=2912 题意:n个人进行m轮剪刀石头布游戏(0<n<=500,0<=m<=2000),接下来m行形如x, y, ch ...

  6. #1066 : 无间道之并查集

    #1066 : 无间道之并查集 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 这天天气晴朗.阳光明媚.鸟语花香,空气中弥漫着春天的气息--额,说远了,总之,小Hi和小H ...

  7. POJ 1611 The Suspects (并查集)

    文章作者:ktyanny 文章来源:ktyanny 转载请注明,谢谢合作. ktyanny:a的第一道并查集. 题目描述: 有很多组学生,在同一个组的学生经常会接触,也会有新的同学的加入.但是SARS ...

  8. CodeForces - 1217F Forced Online Queries Problem(线段树分治+并查集撤销)

    题目链接:点击查看 题目大意:给出 nnn 个点,初始时互相不存在连边,需要执行 mmm 次操作,每次操作分为两种类型: 1xy1 \ x \ y1 x y:如果 (x,y)(x,y)(x,y) 之间 ...

  9. CodeForces - 1463E Plan of Lectures(拓扑排序+并查集缩点)

    题目链接:点击查看 题目大意:给出一棵有根树,树边都是有向边,再给出 kkk 个关系 (x,y)( x , y )(x,y),其意义是访问完点 xxx 后需要立即访问点 yyy,问是否存在一种合适的拓 ...

最新文章

  1. 注意力机制中的Q、K和V的意义
  2. scikit-learn的主要模块和基本使用
  3. 层次聚类算法 算法_聚类算法简介
  4. 前端学习(2262)vue造轮子框架搭建
  5. 【BZOJ2243】 [SDOI2011]染色
  6. antv图例出现分页_图例-自定义文本样式
  7. vue confirm确认
  8. 有人说是金山造了熊猫烧香病毒
  9. 一篇就让你懂线程池原理
  10. 英特尔傲腾持久内存 Optane DC Persistent Memory Module
  11. 工作随笔,一个java开发的一感慨
  12. 使用python调用微步在线接口实现自动化查询IP情报
  13. 解决小米手机用Android studio安装不了app的问题
  14. 黑客突破防火墙常用的几种技术(转)
  15. swoole 连接mysql_swoole教程:用swoole4操作mysql连接池之读写分离
  16. 网页上简体繁体汉字切换
  17. 蒜头君爬楼梯(1) - 计蒜客
  18. 等比数列等差数列求和
  19. 老男孩教育 | 0基础转行学运维,收获薪资13K Offer!
  20. 石墨坩埚能用来融化黄金吗?

热门文章

  1. 基于python实现crc16 ccitt的校验和
  2. 万物互联 | 你的企业可能需要这样一个物联网平台
  3. B2117 整理药名
  4. 计算机科学与技术专业描述是什么,计算机科学与技术专业属于什么门类 计算机科学与技术专业介绍...
  5. IDEA + github pull request + teamcity运用
  6. bzoj 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛
  7. IntelliJ IDEA设置查看Java API帮助文档
  8. Hibernate之QBE--》用语法函数表示sql语句【个人感觉此技术相当之垃圾,反其正道而行】(二十八)
  9. 微信小程序使用face++实现人脸识别登录注册
  10. vue-video-player,springboot实现视频分段下载播放