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

2024-05-07 04:20
文章标签 训练 第一天 四周 百日

本文主要是介绍百日训练(第四周 , 第一天),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

洛谷 —— 奶酪

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.chinasem.cn/article/966304

相关文章

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering)

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering) Power Iteration Clustering (PIC) 是一种基于图的聚类算法,用于在大规模数据集上进行高效的社区检测。PIC 算法的核心思想是通过迭代图的幂运算来发现数据中的潜在簇。该算法适用于处理大规模图数据,特别是在社交网络分析、推荐系统和生物信息学等领域具有广泛应用。Spa

SigLIP——采用sigmoid损失的图文预训练方式

SigLIP——采用sigmoid损失的图文预训练方式 FesianXu 20240825 at Wechat Search Team 前言 CLIP中的infoNCE损失是一种对比性损失,在SigLIP这个工作中,作者提出采用非对比性的sigmoid损失,能够更高效地进行图文预训练,本文进行介绍。如有谬误请见谅并联系指出,本文遵守CC 4.0 BY-SA版权协议,转载请联系作者并注

Java基础回顾系列-第一天-基本语法

基本语法 Java基础回顾系列-第一天-基本语法基础常识人机交互方式常用的DOS命令什么是计算机语言(编程语言) Java语言简介Java程序运行机制Java虚拟机(Java Virtual Machine)垃圾收集机制(Garbage Collection) Java语言的特点面向对象健壮性跨平台性 编写第一个Java程序什么是JDK, JRE下载及安装 JDK配置环境变量 pathHe

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

《C++标准库》读书笔记/第一天(C++新特性(1))

C++11新特性(1) 以auto完成类型自动推导 auto i=42; //以auto声明的变量,其类型会根据其初值被自动推倒出来,因此一定需要一个初始化操作; static auto a=0.19;//可以用额外限定符修饰 vector<string> v;  auto pos=v.begin();//如果类型很长或类型表达式复杂 auto很有用; auto l=[] (int

多云架构下大模型训练的存储稳定性探索

一、多云架构与大模型训练的融合 (一)多云架构的优势与挑战 多云架构为大模型训练带来了诸多优势。首先,资源灵活性显著提高,不同的云平台可以提供不同类型的计算资源和存储服务,满足大模型训练在不同阶段的需求。例如,某些云平台可能在 GPU 计算资源上具有优势,而另一些则在存储成本或性能上表现出色,企业可以根据实际情况进行选择和组合。其次,扩展性得以增强,当大模型的规模不断扩大时,单一云平

Android--第一天

创建AVD: 启动AVD: 点击按钮:Launch如下: 更换来电铃声: Window-->Show View-->Other... 点击进入:展开Android文件夹-->选择File Explorer:操作如下图 要想在音乐播放器上有该音乐,必须先“卸载SD卡,在安装SD卡”这样就可以了,声音--

神经网络训练不起来怎么办(零)| General Guidance

摘要:模型性能不理想时,如何判断 Model Bias, Optimization, Overfitting 等问题,并以此着手优化模型。在这个分析过程中,我们可以对Function Set,模型弹性有直观的理解。关键词:模型性能,Model Bias, Optimization, Overfitting。 零,领域背景 如果我们的模型表现较差,那么我们往往需要根据 Training l

如何创建训练数据集

在 HuggingFace 上创建数据集非常方便,创建完成之后,通过 API 可以方便的下载并使用数据集,在 Google Colab 上进行模型调优,下载数据集速度非常快,本文通过 Dataset 库创建一个简单的训练数据集。 首先安装数据集依赖 HuggingFace datasetshuggingface_hub 创建数据集 替换为自己的 HuggingFace API key