方块游戏 (银河英雄传说)(并查集)

并查集专题(亲戚,格子游戏,银河英雄传说) 此为并查集专题 阅读详情

方块游戏
(cubes.pas/c/cpp)
【题目描述】
小A和小B在玩一个方块游戏。编号为1到n(1<=n<=30000)的n个方块正放在地上。每个构成一个立方柱。
游戏开始后,小A会给小B发出p(1<=p<=100000)个指令。
1、移动(M):将包含X的立方柱移动到包含Y的立方柱上。
2、统计(C):统计含X的立方柱中,在X下方的方块数目。
写个程序帮小B完成游戏。
【输入数据】
第1行输入P,之后P行每行输入一条指令。形式为“M X Y”或者“C X”。
输入保证不会有将立方柱放在自己头上的指令。
【输出数据】
每一行,对于每个统计指令,输出其结果。
【样例输入】
6
M 1 6
C 1
M 2 4
M 2 6
C 3
C 4
【样例输出】
1
0
2
【数据范围】
对于40%的数据,n,P≤200。
对于60%的数据,n,P≤2000。
对于100%的数据,n,P≤100000。

是模拟赛考到的一道题,和刷过的“银河英雄传说”(WikiOI 1540)基本一致,我本来以为我会了,没想到还是纠结了很长时间,于是重新收录一下这道题。
(银河英雄传说:http://codevs.cn/problem/1540/)

用并查集记录每个方块的最后一次被更新时指向的父亲节点,在询问时进行更新。
因为上一次被记录的时候,父亲节点一定是当时最下面的方块,所以父亲节点下面增加的方块数量也是该节点下面增加方块的数量,在find函数中加入该操作即可。

program mys;
var i,k,x,y,rx,ry,p:longint;
f,d,sum:array[0..60000]of longint;
ch:char;

function find(x:longint):longint;
var t,y:longint;
begin 
if f[x]<>x then 
begin 
t:=f[x];
f[x]:=find(f[x]);
d[x]:=d[x]+d[t];
end;
exit(f[x]);
end;

begin 
assign(input,'cubes.in'); reset(input);
assign(output,'cubes.out'); rewrite(output);
readln(p);
for i:=1 to 30000 do 
begin 
f[i]:=i; d[i]:=0; sum[i]:=1;
end;
for i:=1 to p do 
begin
read(ch);
if ch='M' then read(x,y)
else read(x);
readln;

if ch='M' then 
begin 
rx:=find(x);
ry:=find(y);
f[rx]:=ry;
d[rx]:=sum[ry];
sum[ry]:=sum[ry]+sum[rx];
end
else 
begin 
rx:=find(x);
writeln(d[x]);
end;

end;
close(input);
close(output);
end.
【高级数据结构】并查集 A、AcWing 1250. 格子游戏 #include<bits/stdc++.h> using namespace std; const int N = 500007; int n, m; int fa[N]; bool flag; int get(int x, int y){ return x * n + y; } int find(int x){ if(fa[x] == x)return x; return fa[x] = find(fa[x]); } 阅读详情

相关推荐

并查集

文章目录并查集1.基础知识1.1 边带权并查集1.2 扩展域并查集1.3 并查集判断奇环2. 例题2.1 边带权并查集2.2 拓展域并查集2.3 并查集判环2.4 并查集区间合并2.5 路径压缩思想运用--从并查集思想出发 并查集 1.基础知识 1.1 边带权并查集 适用条件: 这样的方法适用于维护存在距离关系的情况,比如说统计相互间的大小关系,距离关系 具体方法: 设置一个d数组,d[u]表示u到fa[u]的距离(或者表示u和fa[u]的属性是否相同) 在两个地方需要维护: 在做get操作时维护a到pa

m0_49959202的博客 489

BZOJ3376: [Usaco2004 Open]Cube Stacking 方块游戏

【传送门:BZOJ3376】 简要题意:   约翰和贝茜在玩一个方块游戏.编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方柱. 游戏开始后,约翰会给贝茜发出P(1≤P≤100000)个指令.指令有两种:   1.移动(M):将包含X的立方柱移动到包含Y的立方柱上.   2.统计(C):统计名含X的立方柱中,在X下方的方块数目. 写个程序帮贝茜完成游戏. ...

weixin_30600197的博客 308

并查集知识点总结和学习心得分享

先介绍一下并查集的基本功能 基础的并查集主要有两种. 第一种是普通的并查集,主要用来处理无权的相对关系,比如说A和B是一类人,B和C是一类人,那么A和C也是一类人. 第二种是带权的并查集.种类并查集也是其中的一种.具体下面会介绍. 1.无权并查集 先引入一个问题.会给N个关系.A B代表A和B是一类东西.且具有传递性. 然后给Q个询问.问A B 是否是同一类东西.如果要O(1)的询问,我们可以建立...

weixin_45590210的博客 573

堆积方块

方块游戏 (cubes.pas/c/cpp) 【题目描述】     小A和小B在玩一个方块游戏。编号为1到n(1     游戏开始后,小A会给小B发出p(1     1、移动(M):将包含X的立方柱移动到包含Y的立方柱上。     2、统计(C):统计含X的立方柱中,在X下方的方块数目。     写个程序帮小B完成游戏。 【输入数据】     第1行输入P,之后P行每行输入一条指

Holylight_Knight 778

检索生成(RAG) vs 长文本大模型:实际应用中如何选择?

大模型的上下文理解能力直接影响到 LLMs 在复杂任务和长对话中的表现。本期内容聚焦于两种主流技术:长上下文(Large Context Windows)和检索增强生成(RAG)。这两种技术各有何优势?在实际应用中,我们又该如何权衡选择?文章不仅详细阐述了这两种技术的工作原理,还深入分析了它们在效率、准确性和实施成本等方面的差异。文章特别提到了在执行重复性任务时使用 Context Caching 优化长上下文的优势,然而,缓存策略的效果很大程度上取决于提示词的可预测性。

2401_85782938的博客 1254

Unity URP半透明物体深度排序优化:解决自交叠渲染瑕疵

本文深入探讨了Unity URP管线中半透明物体深度排序的优化方法,重点解决自交叠区域的渲染瑕疵问题。通过双通道渲染、深度预写入、多通道渲染等核心技术,结合实战案例和性能数据,帮助开发者实现高质量的透明效果渲染。

weixin_30879169的博客 418

信息学奥赛一本通 1347:【例4-8】格子游戏

学习并查集时,每个元素都由一个整数来表示。而该问题中每个元素是一个坐标点,由(x, y)两个整数构成。如果并查集中的元素不为整数,可以将fa数组改为映射(map类型),同时find、merge都发生改变。例:假设坐标点是2行3列的,每个位置的坐标为x, y,转变后的数字为d,记为(x, y):d。通过一个公式将二维坐标换算为一个整数,用这个整数代表该二维坐标。在输入时,使用find直接判断两个数对元素是否在一个集合中。每输入一个坐标(x,y),求出其对应的数字f。把每个坐标都用一个数字表示。

君义NOIP的博客 7385

CloudCompare里那个CSF地面滤波插件,到底怎么用?手把手教你分离点云里的地面

本文详细介绍了如何在CloudCompare中使用CSF地面滤波插件分离点云中的地面数据。通过解析布料模拟滤波算法的核心参数,如布料刚度和网格分辨率,并提供不同地形(城市、丘陵、山地)的适配策略,帮助用户高效处理复杂点云数据。文章还包含实战案例和优化技巧,确保滤波结果的精度和可靠性。

weixin_42548708的博客 221

awcing1250. 格子游戏

题目 提交记录 讨论 题解 视频讲解 Alice和Bob玩了一个古老的游戏:首先画一个n×nn×n的点阵(下图n=3n=3)。 接着,他们两个轮流在相邻的点之间画上红边和蓝边: 直到围成一个封闭的圈(面积不必为11)为止,“封圈”的那个人就是赢家。因为棋盘实在是太大了,他们的游戏实在是太长了! 他们甚至在游戏中都不知道谁赢得了游戏。 于是请你写一个程序,帮助他们计算他们是否结束了游戏? 输入格式 输入数据第一行为两个整数nn和mm。n...

m0_57094519的博客 1869

变色龙哈希函数 Chameleon Hash 可变型区块链

哈希函数 Hash: 众所周知,区块链有着极其优秀的安全性就是因为其充分使用了哈希函数。 哈希简单用一句话来讲,就是:将任意长度输入的字串可转换成一个固定长度的字串,通过原始字串可以很容易地算出转换后的字串,通过转换后的字串很难还原出原始字串。 哈希函数特征: 1. 对于任意m作为输入,得到输出的结果,很难找到另一个输入m'  (m'不等于m),使得m'的Hash结果也为同样的输出

新手村 1万+

基于STM32的多普勒雷达测速

基于多普勒雷达传感器,以STM32单片机为主控芯片,根据不同模块检测距离的不同,使用不同多普勒雷达传感器实现对远近距离车辆行驶速度及方向的测量。 1、基础知识 无线电探测和测距,是用无线电(电磁波)方法发现目标并测定其空间位置的装置。随着雷达技术的发展,现代雷达不仅可以对目标进行定位,还可以测量目标的速度、对目标进行成像甚至测量目标的大小和材料特性。所有利用雷达波来检测物体速度的原理,其理论基础皆源自于“多普勒效应”,...

weixin_52801934的博客 6315

并查集——格子游戏(简单应用)

思路:将图上的每一个点都用他们的坐标转化成一个具体的数字表示做一个点,如 (x,y)可以表示成a= x*n+y。每次向右和向下扩展的时候就相当于将两个点所在的并查集树合并,在合并之前要判断他们的根节点是否相同,如果相同的话就说明已经出现环了。如果在某一步就直接的跳出循环,那剩下的那些没输入的数据有什么用吗?

测试 1128

FCL碰撞检测库在Windows下的编译与配置(MinGW+CMake)

本文详细介绍了在Windows系统下使用MinGW和CMake编译配置FCL碰撞检测库的完整流程。内容涵盖MinGW-w64、CMake的安装与环境配置,关键依赖库Eigen和libccd的安装,以及FCL源码的编译、安装与实战测试。重点解析了CMake配置命令中的关键参数与常见错误解决方案,旨在帮助开发者高效完成FCL在Windows平台的部署,适用于机器人、游戏物理引擎等需要精确碰撞检测的开发场景。

sunny的博客 481

【算法竞赛进阶指南】银河英雄传说 (边带权并查集)

问题 A: 【并查集】银河英雄传说 时间限制: 1 Sec 内存限制: 128 MB [提交] [状态] 题目描述 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展。 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争。泰山压顶集团派宇宙舰队司令莱因哈特率领十万余艘战舰出征,气吞山河集团点名将杨威利组织麾下三万艘战舰...

我们都有光明的未来 612

【机器学习-17】数据变换---小波变换特征提取及应用案列介绍

小波变换作为一种前沿的数据分析工具,近年来在信号分析领域崭露头角。小波分析的理论和方法凭借其独特优势,在信号处理、图像处理、语音处理、模式识别以及量子物理等多个领域得到了广泛的应用,堪称近年来在工具及方法上的重大突破。小波变换以其多分辨率的特性,在时域和频域均展现出对信号局部特征的强大表征能力。通过伸缩和平移等运算过程,小波变换能够对信号进行多尺度聚焦分析,为非平稳信号的时频分析提供了一种有效手段。它允许我们由粗及细地逐步观察信号,从而精准地提取出有用信息。

qq_38614074的博客 2万+

【车载以太网】【SOMEIP】Wireshark测试someip

一、 Wireshark SOMEIP plugin 1.1 插件安装 Wireshark插件目录:Help -> About Wireshark -> Folders/Pluginshttps://github.com/jamores/eth-ws-someip 解压后,将所有后缀是lua的文件拷贝到Wireshark安装目录plugins/2.4.10/下。 1.2时间戳调整为UTC显示格式 View -> Time Display Format -> Date and Tim.

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 9725

带权并查集和扩展域并查集的一些整理和理解(上)

带权并查集和扩展域并查集的一些整理和理解(上),上部全都是带权并查集有关习题,有深入的代码刨析和讲解。

weixin_59867637的博客 973

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

高级数据结构:并查集

文章目录#写在前面##格子游戏----c++版 #写在前面 基础并查集实现了 合并两个集合 查询某个元素的祖宗节点 基本优化 路径压缩 O(logn) 按秩合并 主要思想是合并集合时每次把树的深度较小的一个合并到深度较大的那一个 代码比较长 O(logn) 两个一起可以做到 O(α(n)) 反阿克曼函数 -阿克曼函数 阿克曼函数增长很快,反阿克曼函数增长很慢 基本看成 O(1) 的 并查集扩展 记录一下每个集合的大小,将集合大小这个属性绑定到根节点上 记录一下每个点到根节点的距离,这里需要绑

lafea的博客 295

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

并查集的理解,附练习题

首先贴上模板: struct DSU { vector<int> fa, dis, sz; int n, comp_cnt; DSU(int _n) : n(_n), comp_cnt(_n), fa(_n), dis(_n, 0), sz(_n, 1) { iota(fa.begin(), fa.end(), 0); } int find(int x) { if (x == fa[x]) return

hn2zzzz1996的博客 426

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

[AcWing算法提高课]之 高阶数据结构 并查集(C++题解)

[AcWing算法提高课]之 高阶数据结构 并查集(C++题解)

lihua777的博客 1306

并查集模板

并查集模板 用处 1.合并两个集合 2.查询某个节点的祖宗节点 优化 1.路径压缩,最坏情况 log(n) 2.按照秩合并,最坏log(n) 使用上面的两个优化后,时间复杂度O(alpha(n)) 扩展 1.记录集合大小 集合大小绑定在根节点上,在合并的时候更新 2.每个点到根节点的距离 这个属性放在吗每个点上,例题:食物链(带权并查集(维护相对距离),扩展域并查集(枚举所有可能性)) 3.链表染色 模板 在这里插入代码片 例题 AcWing 1250. 格子游戏 : 并查集的应用之一,并查集判环 ..

zpf1998的博客 317

191113-扩展域并查集

191113-扩展域并查集 T1 食物链 解析 因为有三种关系,同类,吃,被吃,所以我们将每个点拆成三个点:x,xeat,xenemyx,xeat,xenemyx,xeat,xenemy,分别表示x的同类,x的猎物,x的天敌,于是每次对于询问1,就判断xeat与y是否同族,x与yeat是否同族,如果皆不同,那么为真话,否则为假,如果为真,就将x,y合并,xeat,yeat合并,xenemy,yen...

Daniel__d的博客 267
上一篇: WikiOI 4214 品尝美食 (最长不下降子序列优化版)
下一篇: WikiOI 1242 布局 (差分约束基础)
CodeOnce
博客等级 码龄10年 3粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值