百日训练(第四周 , 第一天)

放了一个五一假期,玩了五天,没有刷任何题,今天做一个恢复训练

洛谷 —— 奶酪

P3958 [NOIP2017 提高组] 奶酪 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

不难发现,这题可以用并查集,那么就有两个问题需要解决

1、如何将洞联通到一起

2、如何判断这个联通的洞是否可以出走奶酪

首先对于第一个问题,我们最开始想到的应该是两层for循环来将所有洞做一个合并,那么会超时吗,看到数据是1e3,那么应该不会超时,我们可以放心的去进行for循环

int find(int x){  //路径压缩return fa[x] = (fa[x] == x ? x : find(fa[x]));
}void merge(int x , int y){ //并查集基本操作x = find(x) , y = find(y);if(x == y)return;fa[x] = y;
}bool check(int d ,int b){  //判断两个点是否相交后或者是相切double x1 = a[d].x , x2 = a[b].x;double y1 = a[d].y , y2 = a[b].y;double z1 = a[d].z , z2 = a[b].z;double dis = sqrt((x1 -x2)*(x1 - x2) + (y1-y2)*(y1-y2) + (z1 - z2)*(z1-z2));return dis <=r+r;
}for(int i =1;i<=n;++i){for(int j =i+1;j<=n;++j){if(check(i , j)){merge(i , j);}}}

第二个问题 , 如何判断一个联通的集合中,是否可以走出奶酪呢?

我们可以维护一个与顶部相交或相切的数组 , 和一个和底部相交或者相切的数组,再次进行两个for循环 , 循环上方与下方数组 , 看是否存在上方洞和下方洞在一个集合中 ,若有,就输出yes,否则输出no

下面直接放上完整代码

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define INF 0x3f3f3f3f
const double pi = 3.14;
// #define x first
// #define y second 
#define int long long
// #define ll long long
typedef pair<int,int> pii;
int gcd(int x , int y){return y ==0?x : gcd(y , x%y);
}
int lcm(int x , int y){return x*y/gcd(x,y);
}
// const int mod = 998244353;
const int N  = 1e5+9;
struct node
{double x , y ,z;
}a[N];
int n , h , r;
int fa[N] ,tot1[N] , tot2[N];int find(int x){return fa[x] = (fa[x] == x ? x : find(fa[x]));
}void merge(int x , int y){x = find(x) , y = find(y);if(x == y)return;fa[x] = y;
}bool check(int d ,int b){double x1 = a[d].x , x2 = a[b].x;double y1 = a[d].y , y2 = a[b].y;double z1 = a[d].z , z2 = a[b].z;double dis = sqrt((x1 -x2)*(x1 - x2) + (y1-y2)*(y1-y2) + (z1 - z2)*(z1-z2));return dis <=r+r;
}void solve(){memset(fa , 0 , sizeof(fa));memset(a , 0 ,sizeof(a));cin>>n>>h>>r;for(int i =1;i<=n;++i)cin>>a[i].x>>a[i].y>>a[i].z;for(int i =1;i<=n;++i)fa[i] = i;int cnt1 = 1 , cnt2 = 1;for(int i =1;i<=n;++i){if(a[i].z + r >= h){tot1[cnt1] = i;cnt1++;}if(a[i].z - r <=0){tot2[cnt2] = i;cnt2++;}}cnt1--;cnt2--;for(int i =1;i<=n;++i){for(int j =i+1;j<=n;++j){if(check(i , j)){merge(i , j);}}}for(int i =1;i<=cnt1;++i){for(int j =1;j<=cnt2;++j){if(find(tot1[i]) == find(tot2[j])){cout<<"Yes"<<endl;return;}}}cout<<"No"<<endl;}signed main(){ios::sync_with_stdio(false);cout.tie(0);cin.tie(0);int _ =1;cin>>_;while(_--){solve();}return 0;
}

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

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

相关文章

拓扑是什么意思

拓扑学&#xff0c;有时候被称为“橡胶片几何学”&#xff0c;它是研究空间形状在连续变形下的性质的数学分支。这种变形包括拉伸、压缩、扭曲&#xff0c;但不包括撕裂或粘合。 一个经典的拓扑问题就是“环面和咖啡杯”的问题。在拓扑学中&#xff0c;一个环面&#xff08;就…

Swift 周报 第五十期

文章目录 前言新闻和社区WWDC24&#xff1a;6 月 10 日至 14 日 (太平洋时间)苹果“内忧外患”&#xff0c;库克中国求援苹果被起诉&#xff01;市值一夜蒸发8000亿元 提案通过的提案正在审查的提案拒绝的提案 Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组自主…

unity车辆碰撞检测

在Unity中根据车辆碰撞检测去调度车辆集群行驶可以通过以下方法实现&#xff1a; 添加碰撞检测组件&#xff1a;在每辆车辆上添加Collider组件和Rigidbody组件&#xff0c;以便进行碰撞检测和物理模拟。 设定车辆行驶轨迹&#xff1a;为每辆车辆设定行驶轨迹或目标点&#xff…

八股spring+springboot+springMVC+Mybatis(一)

目录 1、面试官&#xff1a;Spring框架中的单例bean是线程安全的吗&#xff1f; 2、面试官&#xff1a;什么是AOP 3、面试官&#xff1a;你们项目中有没有使用到AOP 4、面试官&#xff1a;Spring中的事务是如何实现的 5、面试官&#xff1a;Spring中事务失效的场景有哪些 6、面…

行业推荐:数据防泄漏软件首先解决方案

随着信息时代的快速发展&#xff0c;数据安全已成为企业经营的关键之一。然而&#xff0c;数据泄漏事件时有发生&#xff0c;不仅可能导致巨大的经济损失&#xff0c;更会损害企业的声誉和客户信任。 为了帮助企业有效地保护数据安全&#xff0c;Ping32 数据防泄漏系统应运而生…

【C++】-QT多线程-006

1【QT】多线程 #ifndef MYWIDGET_H #define MYWIDGET_H#include <QWidget>namespace Ui { class MyWidget; }class MyWidget : public QWidget {Q_OBJECTpublic:explicit MyWidget(QWidget *parent 0);~MyWidget();/* 5 自定义信号*/ /*所有的信号函数只声明不定义&…

SpringSecurity6配置requestMatchers().permitAll() 无效问题

版本 <spring-boot.version>3.0.2</spring-boot.version> <jjwt.version>0.12.5</jjwt.version>问题描述 题主在写 SpringSecurity6 JWT 做登录认证开发。一路跟着教程叭叭的敲。等到接口验证的时候&#xff0c;发现我的登录接口虽然在SecurityConf…

Android 实时监听Activity堆栈变化(系统应用)

private val mIActivityManager: IActivityManager ActivityManagerNative.asInterface(ServiceManager.getService(Context.ACTIVITY_SERVICE)) 方式一&#xff08;registerProcessObserver&#xff09; &#xff1a; mIActivityManager.registerProcessObserver(mIProcess…

JS手写call方法

call方法是JS function中内置的一个方法&#xff0c;主要的作用有两个&#xff1a; 改变函数的this指向向函数中传递参数 使用方式如下&#xff1a; fn.call(obj, 100, 200) 实现代码示例&#xff1a; Function.prototype.myCall function(ctx, ...args) {ctx ctx unde…

【Linux】掌握Linux系统编程中的权限与访问控制

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

电源小白入门学习7——USB充电、供电、电源路径管理

电源小白入门学习7——USB充电、供电、电源路径管理 USB充电系统需要考虑的因素开关充电和线性充电充电路径管理输入限流路径管理&#xff08;动态功率管理&#xff09;理想二极管帮助提高电池利用率输入过充抑制 上期我们介绍了锂离子电池的电池特性&#xff0c;及充电电路设计…

QT--1

类型界面 #include "mywidget.h"myWidget::myWidget(QWidget *parent): QWidget(parent) {//窗口相关设置this->resize(680,520);this->setFixedSize(680,520);this->setWindowTitle("Tim");this->setWindowFlag(Qt::FramelessWindowHint);th…

Java项目硅谷课堂后端报错处理

Java项目硅谷课堂后端报错处理总结 前言service_vod报错import javax.servlet.http.HttpServletResponse;找不到java.lang.IllegalStateException gateway报错Failed to configure a DataSourceUnsatisfiedDependencyException: Error creating bean with name gatewayConfigur…

自学是什么?如何学会自学?

如是我闻&#xff1a; 自学是什么&#xff1f; 对自学下一个定义&#xff0c;可以这样说&#xff1a; 自学就是自主的选择学习资源来学习。 而自学的方式&#xff0c;无论是看网课&#xff0c;读教材&#xff0c;做习题&#xff0c; 都是一般的的学习方法。 我们是无法从方…

生成一个好故事!StoryDiffusion:一致自注意力和语义运动预测器必不可少(南开字节)

文章链接&#xff1a;https://arxiv.org/pdf/2405.01434 主页&#xff1a;https://storydiffusion.github.io/ 对于最近基于扩散的生成模型来说&#xff0c;在一系列生成的图像中保持一致的内容&#xff0c;尤其是那些包含主题和复杂细节的图像&#xff0c;是一个重大挑战。本…

Ollama+Open WebUI部署大模型在linux平台

Ollama安装运行 Ollama容器拉取 docker pull ollama/ollamaOllama容器CPU运行 docker run -d --restartalways -v /home/docker/ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollamaOllama容器GPU运行 # nvidia-container-runtime-script.shsudo curl -s -L …

网络初始化配置

IPADDR192.168.23.10 #新的ip地址&#xff0c;ip的网段要与nat模式下的网段一致 NETMASK255.255.255.0 #子网掩码 GATEWAY192.168.23.2 #网关 DNS1114.114.114.114 #域名解析&#xff1a;配置为国内114.114.114.114&#xff0c;国外8.8.8.8 ONBOOTtrue 启动时该网卡…

(代码示例)使用crypto-js实现AES加密解密

npm install crypto-js # 官方文档 <https://www.npmjs.com/package/crypto-js>适用于需要检验的场景 比如敏感的前端query参数Cookie中的某个字段数据库中的敏感字段 // 做成文件 const CryptoJS require("crypto-js"); // 秘钥 const aesKey "59a…

【信息系统项目管理师练习题】信息系统治理

IT治理的核心是关注以下哪项内容? a) 人员培训和发展计划 b) IT定位和信息化建设与数字化转型的责权利划分 c) 业务流程的绩效管理 d) IT基础设施的优化利用 答案: b) IT定位和信息化建设与数字化转型的责权利划分 IT治理体系框架的组成部分包括以下哪些? a) IT战略目标、IT治…

视频降噪算法 Meshflow 介绍

介绍 Meshflow 视频降噪算法来自于 2017 年电子科技大学一篇高质量论文。 该论文提出了一个新的运动模型MeshFlow&#xff0c;它是一个空间平滑的稀疏运动场 (spatially smooth sparse motion field)&#xff0c;其运动矢量 (motion vectors) 仅在网格顶点 (mesh vertexes) 处…