Codeforces Round 134 (Div. 1) A. Ice Skating (并查集)
Ice Skating
题面翻译
Description
给出n个点的横纵坐标,两个点互通当且仅当两个点有相同的横坐标或纵坐标,问最少需要加几个点才能使得所有点都两两互通
Input
第一行一个整数n表示点数,之后n行每行两个整数x[ i ]和y[ i ]表示第i个点的横纵坐标(1<=n<=100,1<=x[ i ],y[ i ]<=1000)
Output
输出需要加的最少点数
题目描述
Bajtek is learning to skate on ice. He’s a beginner, so his only mode of transportation is pushing off from a snow drift to the north, east, south or west and sliding until he lands in another snow drift. He has noticed that in this way it’s impossible to get from some snow drifts to some other by any sequence of moves. He now wants to heap up some additional snow drifts, so that he can get from any snow drift to any other one. He asked you to find the minimal number of snow drifts that need to be created.
We assume that Bajtek can only heap up snow drifts at integer coordinates.
输入格式
The first line of input contains a single integer $ n $ ( $ 1<=n<=100 $ ) — the number of snow drifts. Each of the following $ n $ lines contains two integers $ x_{i} $ and $ y_{i} $ ( $ 1<=x_{i},y_{i}<=1000 $ ) — the coordinates of the $ i $ -th snow drift.
Note that the north direction coinсides with the direction of $ Oy $ axis, so the east direction coinсides with the direction of the $ Ox $ axis. All snow drift’s locations are distinct.
输出格式
Output the minimal number of snow drifts that need to be created in order for Bajtek to be able to reach any snow drift from any other one.
样例 #1
样例输入 #1
2
2 1
1 2
样例输出 #1
1
样例 #2
样例输入 #2
2
2 1
4 1
样例输出 #2
0
使用并查集求解。
首先应明确,在这道题中,想要连接任意两堆雪,只需要增加一堆雪就可以。
然后我们想在想要知道应该增加几堆雪,就只需要知道有几堆雪没有连接起来,没有连接的雪的数量减一就是需要增加的雪堆的数量。
那么只需要枚举所有的点,然后使用并查集合并上所有能够在同一个横轴或者纵轴的点,最后求解出来连通块的数量,就能够得到没有连通的数量。
CODE:
#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
#define pii pair<int,int>
#define x first
#define y secondint p[N];
int n;
pii a[N];int find(int x){if(x != p[x])p[x] = find(p[x]);return p[x];
}int main(){cin >> n;for(int i = 1;i <= n;i++)cin >> a[i].x >> a[i].y;for(int i = 0;i < N;i++)p[i] = i;for(int i = 1;i <= n;i++){for(int j = i + 1;j <= n;j++){if(a[i].x == a[j].x || a[i].y == a[j].y){p[find(i)] = find(j);}}}int cnt = 0;for(int i = 1;i <= n;i++)if(p[i] == i)cnt++;cout << cnt - 1 << endl;return 0;
}
相关文章:
Codeforces Round 134 (Div. 1) A. Ice Skating (并查集)
Ice Skating 题面翻译 Description 给出n个点的横纵坐标,两个点互通当且仅当两个点有相同的横坐标或纵坐标,问最少需要加几个点才能使得所有点都两两互通 Input 第一行一个整数n表示点数,之后n行每行两个整数x[ i ]和y[ i ]表示第i个点的…...
深入了解 Flask Request
文章目录 获取请求数据获取请求信息文件上传总结 Flask 是一个轻量级的 Python Web 框架,其简洁的设计和灵活的扩展性使其成为了许多开发者的首选。在 Flask 中,处理 HTTP 请求是至关重要的,而 Flask 提供了丰富而强大的 request 对象来处理…...
前端测试策略与实践:单元测试、E2E测试与可访问性审计
前端测试策略是确保Web应用程序质量、性能和用户体验的关键组成部分。有效的测试策略通常包括单元测试、端到端(E2E)测试以及可访问性审计等多个层面。以下是关于这三类测试的策略与实践建议: 单元测试 定义与目的: 单元测试是针…...
修改el-checkbox样式
一定要在最外层; //未选中框/deep/ .el-checkbox__inner{border-color: #0862a3;}//选中框/deep/ .el-checkbox__input.is-checked .el-checkbox__inner{background-color: #0862a3;border-color: #0862a3;}//未选中框时右侧文字/deep/ .el-checkbox__label{}//选中…...
UE5缺少SDK,而无法在windows平台打包的解决方法
问题1:UE5缺少SDK,而无法在windows平台打包的解决方法(项目问题,做一下记录,没有参考性) (1)打不开:D:\imageworks-OpenColorIO-Configs-v1.0_r2-8-g0bb079c.tar 解决方案:从23拷贝D…...
4G,5G执法记录仪人脸识别、人脸比对使用说明
4G/5G执法记录仪或4G/5G智能安全帽,做前端人脸识别、人脸比对,采用了上市公司的成熟的人脸识别算法,需要支付LICENSE给算法公司,理论上前端设备支持30K的人脸库(受设备运行内存限制)。 4G/5G执法记录仪侧要…...
掌握SEO优化的关键:提升网站排名的秘籍(如何提高网站seo排名)
你是否曾经在搜索引擎上搜索过一个关键词,然后点击了排在前几位的网站?如果是,那么你已经体会到了SEO(搜索引擎优化)的威力。SEO是一项关键的网络营销策略,它能够让你的网站在搜索引擎中获得更高的排名&…...
大模型微调之 在亚马逊AWS上实战LlaMA案例(九)
大模型微调之 在亚马逊AWS上实战LlaMA案例(九) 代码阅读 src/llama_recipes/inference/prompt_format_utils.py 这段代码是一个Python模块,它定义了几个类和模板,用于生成安全评估的提示文本。以下是对每一行代码的注释和提示词…...
Php php7的特性
1. 性能优化 PHP7引入了Zend Engine 3.0,显著提高了执行效率,相比PHP 5.x,性能提升了2-3倍。这个特性无法直接通过代码示例展示,但你可以感受到在升级到PHP7后,相同代码的执行速度更快。 2. 函数返回类型声明 允许在…...
node pnpm修改默认包的存储路径
pnpm与npm的区别 PNPM和NPM是两个不同的包管理工具。 NPM(Node Package Manager)是Node.js的官方包管理工具,用于安装、发布和管理Node.js模块。NPM将包安装在项目的node_modules目录中,每个包都有自己的依赖树。 PNPM…...
Adobe-Premiere-CEP 扩展 入门-视频剪辑-去气口插件-Silence Remover
短视频,这两年比较火,不要再问为什么用Premiere,非常难用,为什么不用某影,某些国内软件非常接地气简单,又例如某音资深的视频短编辑就很好用了。。。 Premiere二次开发调试难,不如自己搞个cons…...
基于多目标灰狼算法的冷热电联供型微网低碳经济调度
针对冷热电联供型微电网运行调度的优化问题,为实现节能减排的目标,以微电网运行费用和环境污 染成本为优化目标,建立了包含风机、微型燃气轮机、余热锅炉、溴化锂吸收式制冷机等微源的微电网优化 模型。模型的优化求解使用改进的多目标灰狼优化算法,得到多目标问题的 Paret…...
Python 正则表达式 (?=...) 和 (?<=...) 符号
Python 正则表达式 引言正文示例1示例2示例3示例4 引言 今天遇到了一个比较棘手的问题,于是终于打算要对正则表达式中的 (?...) 和 (?<...) 符号动手了。 正文 (?...) 表示当 … 匹配时,匹配成功,但不消耗字符串中的任何字符。这个…...
Vue.js中使用JavaScript实现路由跳转详解
在Vue应用中,利用Vue Router进行页面间的导航是一个常见需求。本篇博客将通过示例代码详细介绍如何在Vue组件中使用JavaScript实现路由跳转,包括传递参数的两种方式:通过params和query。让我们一步步深入了解。 基础设置 首先,确…...
社群裂变:从微光到星火的社群增长奥秘
在当今社交媒体盛行的时代,社群裂变已成为众多品牌、企业和个人实现快速增长的重要策略。社群裂变不仅能够有效扩大影响力,还能精准触达目标用户,实现高效转化。本文将深入探讨社群裂变的内涵、策略及实施方法,助您揭开社群增长的…...
Git命令Gitee注册idea操作git超详细
文章目录 概述相关概念下载和安装常见命令远程仓库介绍与码云注册创建介绍码云注册远程仓库操作关联拉取推送克隆 在idea中使用git集成add和commit差异化比较&查看提交记录版本回退及撤销与远程仓库关联 push从远程仓库上拉取,克隆项目到本地创建分支切换分支将…...
出差行程到底怎么管?这个“高分指南”划重点来了!
在日常商旅过程中,出差行程计划是必不可少的环节。公司需要以此为依据判断行程是否有必要、是否合理,确保出差行程与公司的业务需求相符。 通过胜意费控云,员工填写出差申请时,行程计划智能生成,平台自动匹配并带出差标…...
js设计模式--发布订阅者模式
概述 发布订阅者模式用于处理对象之间的事件通信,该模式涉及两个主要角色:发布者(Publisher)和订阅者(Subscriber) 发布者维护一个事件列表,并在事件发生时通知所有已注册的订阅者。订阅者可以…...
【图论】图论基础
图论不同地方讲的不太一样,本文仅限作者的理解 定义 图一般由点集 V V V 和边集 E E E 组成。 对于 v ∈ V v\in V v∈V,称 v v v 为该图的一个节点。 对于 e ∈ E e\in E e∈E,一般用二元组 ( u , v ) (u,v) (u,v) 表示 e e e&…...
Konga域名配置多个路由
云原生API网关-Kong部署与konga基本使用 Nginx server{listen 443 ssl;location / {proxy_pass http://127.0.0.1:8100;}location /openApi {proxy_pass http://172.31.233.35:7100/openApi;} } Kong {"id": "f880b21c-f7e0-43d7-a2a9-221fe86d9231&q…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
