独有病眼花,春风吹不落。 (二维坐标压缩成一个点,并查集)

本题链接:登录—专业IT笔试面试备考平台_牛客网

题目:

样例:

输入
3 8
1 1 D
1 1 R
1 2 D
2 1 D
2 2 R
3 1 R
3 2 R
2 3 D
输出
8

思路:

        根据题意,要求连接线段后,操作多少次,连接的线段闭合,如果操作完都没有闭合,说明平局输出“draw”。

        在这里,我们可以将线段当作拥有两个点,当我们所画的线段两端的点是头和尾的时候,说明我们画闭合了。所以根据寻找当前点的根结点的时候就是头结点。我们很容易联想到并查集。

        这里有个难题就是如何将二维坐标化成一个点的形式存在。我们可以通过映射的方式,由于坐标的 x,y是唯一坐标,所以我们可以结合 x 和 y的结合唯一特点性,转化为一个点映射在我们范围之外即可。

二维坐标化为一个点函数:

inline int getPost(int x,int y)
{return x*n + y;
}

随后就是模板并查集的合并查询操作即可。

代码详解如下:

#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
#include <algorithm>
#include <unordered_map>
#define endl '\n'
#define x first
#define y second
#define int long long
#define YES puts("YES")
#define NO puts("NO")
#define umap unordered_map
#define All(x) x.begin(),x.end()
#pragma GCC optimize(3,"Ofast","inline")
#define IOS std::ios::sync_with_stdio(false),cin.tie(0), cout.tie(0)
using namespace std;
const int N = 2e7 + 10;
inline void solve();signed main()
{
//	freopen("a.txt", "r", stdin);IOS;int _t = 1;// cin >> _t;while (_t--){solve();}return 0;
}
int n,m;
int f[N];// 二维坐标转化一维点
inline int getPost(int x,int y)
{return x*n + y;
}
inline void Init()
{for(int i = 1;i <= n * n;++i) f[i] = i;
}
inline int Finds(int x)
{int t = x;while(f[x] != x) x = f[x];f[t] = x;return x;
}
inline void solve()
{cin >> n >> m;Init();	// 并查集初始化操作for(int step = 1;step <= m;++step){int x,y;char op;cin >> x >> y >> op;--x,--y;	// 小优化,省一省空间int b,a = getPost(x,y);	// 二维坐标转化一维点if(op == 'D') b = getPost(x + 1,y);else b = getPost(x,y + 1);a = Finds(a),b = Finds(b);	// 查找线段两端的根节点if(a == b)	// 如果两端的根节点一致,说明出现了闭区间{cout << step << endl;return ;}f[a] = b;	// 合并区间}cout << "draw" << endl;
}

最后提交:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/674479.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP PP学习笔记12 - 评估MRP的运行结果

上一章讲了MRP的概念&#xff0c;参数&#xff0c;配置等内容。 SAP PP学习笔记11 - PP中的MRP相关概念&#xff0c;参数&#xff0c;配置-CSDN博客 本章来讲 MRP跑完之后呢&#xff0c;要怎么评估这个MRP的运行结果。 1&#xff0c;Stock/Requirements List and MRP List 在…

LeetCode算法题:8.字符串转换整数 (atoi)

请你来实现一个 myAtoi(string s) 函数&#xff0c;使其能将字符串转换成一个 32 位有符号整数&#xff08;类似 C/C 中的 atoi 函数&#xff09;。 函数 myAtoi(string s) 的算法如下&#xff1a; 读入字符串并丢弃无用的前导空格检查下一个字符&#xff08;假设还未到字符末…

ASP.NET网上鲜花销售系统的设计

摘 要 本系统实现了一般电子商务所具备的功能&#xff0c;如商品浏览、用户登录注册、网上与购物、结算、后台数据库管理等&#xff0c;利用这些功能可以对鲜花销售信息进行较好的管理。 网上鲜花销售系统的使用者主要是客户和销售管理者&#xff0c;对于客户来说&#xff0…

传统汽车空调系统工作原理

1.首先讲一个概念 液体变成气体&#xff1a;吸热 气体变成液体&#xff1a;放热 2.在汽车空调系统中热量的传递的介质不是水&#xff0c;而是氟利昂&#xff0c;简称&#xff1a;“氟”。 3.传统式汽车空调结构如下 该三个部件位于车头进气口位置 该部位位于汽车驾驶车厢前方…

上海个人购房提取公积金经历和注意事项(收藏不踩坑)

在前一篇文章中&#xff0c;我介绍了 2024 年 4 月 24 日上海个人购房个税退税经历&#xff0c;我于 4 月 27 日周六&#xff0c;顺利办理租房公积金提取业务&#xff0c;资金在业务办理完成后 10 分钟左右到账。通过本文分享办理过程的材料和注意事项&#xff0c;避免大家踩坑…

PTQ4SAM、Mamba-Attention、AniTalker、IceFormer、U-DiTs、CogDPM

本文首发于公众号&#xff1a;机器感知 PTQ4SAM、Mamba-Attention、AniTalker、IceFormer、U-DiTs、CogDPM PTQ4SAM: Post-Training Quantization for Segment Anything Segment Anything Model (SAM) has achieved impressive performance in many computer vision tasks. Ho…

uni-app+vue3 +uni.connectSocket 使用websocket

前言 最近在uni-appvue3websocket实现聊天功能&#xff0c;在使用websocket还是遇到很多问题 这次因为是app手机应用&#xff0c;就没有使用websocket对象&#xff0c;使用的是uni-app的uni.connectSocket 为了方便测试这次用的是node.js一个简单的dom&#xff0c;来联调模拟…

基于Springboot的校园新闻管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的校园新闻管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

EOCR-ELR-30RM7Q电机保护器 施耐德韩国三和

EOCR-ELR-30RM7Q电机保护器 施耐德韩国三和 基于MCU(微处理器)的密集型设计 精确的接地故障保护功能 电力系统和电动机的接地故障保护 零序电流互感器监测接地故障 电流和故障延时单独设定 LED显示电源输入和运行状态 嵌入式安装 EOCR主要产品有电子式电动机保护继电器&#xf…

如何在已经安装好的PostgreSQL14中安装uuid 扩展

当前环境 PG14.8 LINUX 8.8 存在问题&#xff1a; 开发人员问&#xff0c;PG中&#xff0c;支持 生成UUID吗&#xff0c;具体是什么&#xff0c;答&#xff0c;类似这个函数 uuid_generate_v4() 看了一下&#xff0c; select uuid_generate_v4();会报错&#xff0…

GDPU 天码行空11

&#xff08;一&#xff09;实验目的 1、掌握JAVA中IO中各种类及其构造方法&#xff1b; 2、重点掌握IO中类所具有的IO操作方法&#xff1b; 3、熟悉软件中登录模块的开发方法&#xff1b; 4、掌握IO中读写常用方法。 5、进一步熟悉正则规则的使用方法。 &#xff08;二&…

Linux内核之获取文件系统超级块:sget用法实例(六十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…