速通ACM省铜第四天 赋源码(G-C-D, Unlucky!)

目录

 

引言:

G-C-D, Unlucky!

        题意分析

        逻辑梳理

        代码实现

结语:


 

引言:

        因为今天打了个ICPC网络赛,导致坐牢了一下午,没什么时间打题目了,就打了一道题,所以,今天我们就只讲一题了,该题是CF难度分值1400的题,今天应该是跟第一天一样轻松的训练量,那话不多说,我们进入题目讲解————>

                        ​​​​​​​        ​​​​​​​        ​​​​​​​        


G-C-D, Unlucky!

        与先前一样。我们先来看题目

        题意分析

        这是题目的链接Problem - E - Codeforces

        不想跳转的可以看下图

        

        这个题目表达的意思其实是很简单的,就是输入2个数组,然后问是否存在一个数组a,满足,第一个数组是a数组从前往后求公约数,第二个数组是a数组从后往前求公约数,那么,题目意思就说完了,接下来我们来梳理一下逻辑


        逻辑梳理

        首先一个是从前往后依次公约数的数组,这个数组的第一个一定是a数组的首元素

        还有一个是从后往前依次公约数的数组,这个数组的最后一个元素一定是a数组的尾元素

        这个是第一眼就能看出的东西,但我感觉对这题没有什么用,但是,第一个数组的最后一个元素与第二个数组的首元素反而非常关键

        因为第一个数组的末元素是将a数组全部进行求公约数,第二个数组的首元素是将a数组全部进行求公约数,只是一个是顺着求,一个是逆着求

        所以,若这个a数组存在,那么第一个数组的末元素和第二个数组的首元素一定要相等,这是第一个若要让a数组存在需要满足的条件

        那么,接下来,因为第一个数组是从前往后求公约数,所以第一个数组从前往后要单调不递增,因为第二个数组是从后往前求公约数,所以第二个数组从后往前要单调不递增,即从前往后要单调不递减,这是第二个若要让a数组存在需要满足的条件

        然后,既然已经知道了数的变化顺序,接下来,我们来看变化规律,因为是一步步公约数求下去的,所以对第一个数组而言,i+1位置上的数肯定是i位置上数的因数或本身而不能是其他的数,若是其他的数就不满足依次求公约数的性质了

        对第二个数组也同理,只是第二个数组是从后往前求公约数,所以i位置上的数肯定是i+1位置上的数的因数或者他本身而不能是其他的数

        上边的便是第三个若要让a数组存在需要满满足的条件即第一个数组依次往后的数据要是他前一个数据的因数或本身,第二个数组依次往前的数据要是他后一个数据的因数或本身

        还有一个就比较抽象了,这也是最难想的一个条件,这个条件我也想了好久,这个条件如图

        我们只需要通过一个循环求 下标为i的第一个数组的元素 和 下标为i+1的第二个数组的元素  的最大公约数求出来判断是否为第二个数组的第一个元素即可(因为这俩个元素求出来的公约数就是整个数组的公约数了)

        那么,四个关键的条件就集齐啦,接下来我们就进入代码实现的环节


        代码实现

        逻辑已经讲完了,接下来我们只需要用代码将四个功能实现出来就可以了,那么具体我就不多讲了,直接放AC码啦

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <queue>
#include <vector>
using namespace std;int t;
long long a[100010];
long long b[100010];long long gcd(long long x, long long y)
{if (y == 0)return x;return gcd(y, x % y);
}void solve()
{int xixi = 0;int n;cin >> n;a[0] = 1e10;for (int i = 1; i <= n; i++){cin >> a[i];if (a[i] > a[i - 1])xixi = 1;}for (int i = 1; i <= n; i++){cin >> b[i];if (b[i] < b[i - 1])xixi = 1;}for (int i = 1; i < n; i++){if (a[i] % a[i + 1] || b[i + 1] % b[i]){xixi = 1;break;}if (gcd(a[i], b[i+1]) != b[1]){xixi = 1;break;}}if (n == 1 && a[1] == b[1]){cout << "Yes" << endl;return;}if (xixi || a[n] != b[1]){cout << "No" << endl;return;}cout << "Yes" << endl;
}int main()
{cin >> t;while (t--){solve();}return 0;
}

        那么这道题就讲完啦


结语:

        今日算法讲解到此结束啦,希望对你们有所帮助,谢谢观看,如果觉得不错可以分享给朋友哟

 

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

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

相关文章

数据链路层总结

目录 &#xff08;一&#xff09;以太网&#xff08;IEEE 802.3&#xff09; &#xff08;1&#xff09;以太网的帧格式 &#xff08;2&#xff09;帧协议类型字段 ①ARP协议 &#xff08;横跨网络层和数据链路层的协议&#xff09; ②RARP协议 &#xff08;二&#xff…

Scala 新手实战三案例:从循环到条件,搞定基础编程场景

Scala 新手实战三案例&#xff1a;从循环到条件&#xff0c;搞定基础编程场景 对 Scala 新手来说&#xff0c;单纯记语法容易 “学完就忘”&#xff0c;而通过小而精的实战案例巩固知识点&#xff0c;是掌握语言的关键。本文精选三个高频基础场景 ——9 乘 9 乘法口诀表、成绩等…

java学习笔记----标识符与变量

1.什么是标识符?Java中变量、方法、类等要素命名时使用的字符序列&#xff0c;称为标识符。 技巧:凡是自己可以起名字的地方都叫标识符。 比如:类名、方法名、变量名、包名、常量名等 2.标识符的命名规则由26个英文字母大小写&#xff0c;0-9&#xff0c;或$组成 数字不可以开…

AI产品经理面试宝典第93天:Embedding技术选型与场景化应用指南

1. Embedding技术演进全景解析 1.1 稀疏向量:关键词匹配的基石 1.1.1 问:请说明稀疏向量的适用场景及技术特点 答:稀疏向量适用于关键词精确匹配场景,典型实现包括TF-IDF、BM25和SPLADE。其技术特征表现为50,000+高维向量且95%以上位置为零值,通过余弦或点积计算相似度…

【Mermaid.js】从入门到精通:完美处理节点中的空格、括号和特殊字符

文章标签&#xff1a; Mermaid, Markdown, 前端开发, 数据可视化, 流程图 文章摘要&#xff1a; 你是否在使用 Mermaid.js 绘制流程图时&#xff0c;仅仅因为节点文本里加了一个空格或括号&#xff0c;整个图就渲染失败了&#xff1f;别担心&#xff0c;这几乎是每个 Mermaid 新…

多技术融合提升环境生态水文、土地土壤、农业大气等领域的数据分析与项目科研水平

一&#xff1a;空间数据获取与制图1.1 软件安装与应用1.2 空间数据介绍1.3海量空间数据下载1.4 ArcGIS软件快速入门1.5 Geodatabase地理数据库二&#xff1a;ArcGIS专题地图制作2.1专题地图制作规范2.2 空间数据的准备与处理2.3 空间数据可视化&#xff1a;地图符号与注记2.4 研…

【音视频】Android NDK 与.so库适配

一、名词解析 名词全称核心说明Android NDKNative Development Kit在SDK基础上增加“原生”开发能力&#xff0c;支持使用C/C编写代码&#xff0c;用于开发需要调用底层能力的模块&#xff08;如音视频、加密算法等&#xff09;.so库Shared Object即共享库&#xff0c;由NDK编…

SpringBoot 轻量级一站式日志可视化与JVM监控

一、项目初衷Java 应用开发的同学都知道&#xff0c;项目上线后&#xff0c;日志的可视化查询与 JVM 的可视化监控是一件非常重要的事。 市面上成熟方案一般是采用 ELK/EFK 实现日志可视化&#xff0c;采用 Actuator Prometheus Grafana 实现 JVM 监控。 这两套都是非常优秀的…

【Leetcode hot 100】101.对称二叉树

问题链接 101.对称二叉树 问题描述 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;…

Zynq开发实践(FPGA之选择开发板)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】我们之所以选用zynq开发板&#xff0c;就在于它支持arm软件开发&#xff0c;也支持fpga开发&#xff0c;甚至可以运行linux&#xff0c;这是之前没有…

Flutter Riverpod 3.0 发布,大规模重构下的全新状态管理框架

在之前的 《注解模式下的 Riverpod 有什么特别之处》我们聊过 Riverpod 2.x 的设计和使用原理&#xff0c;同时当时我们就聊到作者已经在开始探索 3.0 的重构方式&#xff0c;而现在随着 Riverpod 3.0 的发布&#xff0c;riverpod 带来了许多细节性的变化。 当然&#xff0c;这…

Xcode 上传 ipa 全流程详解 App Store 上架流程、uni-app 生成 ipa 文件上传与审核指南

对于 iOS 开发者而言&#xff0c;应用开发完成后最重要的一步就是将应用打包为 ipa 文件&#xff0c;并上传至 App Store Connect 进行分发或上架。 其中&#xff0c;Xcode 上传 ipa 是最常见的方法&#xff0c;但很多开发者在实际操作中常常遇到卡住、上传失败或签名错误等问题…

快速选中对象

图片要求 图片背景单纯&#xff0c;对象边缘比较清晰 对象选择工具 选择对象选择工具后&#xff0c;画出大致区域&#xff0c;系统将自动分析图片内容&#xff0c;从而实现快速选择图片中的一个惑多个对象他有两种模式&#xff0c;分别是举行与套索模式。使用时可以先选中对象的…

点到点链路上的OSPF动态路由(2025年9月10日)

一、前言前面我们已经分享过了静态路由、缺省路由、浮动静态路由这些静态路由的配置。接下来将会 陆陆续续开始分享动态路由以及其他路由配置。博主这里是一个新人&#xff0c;了解这些路由配置不是自上而下的&#xff0c;而是自下而上的&#xff0c;也就是说通过实验去理解原理…

技术视界 | 末端执行器:机器人的“手”,如何赋予机器以生命?

在现代自动化系统中&#xff0c;末端执行器&#xff08;End Effector&#xff09;作为机器人与物理世界交互的“手”&#xff0c;发挥着至关重要的作用。它直接安装在机械臂末端&#xff0c;不仅是机器人实现“抓取、感知和操作”三大核心功能的关键部件&#xff0c;更是整个自…

滑动窗口概述

滑动窗口算法简介滑动窗口是一种用于处理数组或字符串子区间问题的高效算法。它通过维护一个动态窗口&#xff08;通常由两个指针表示&#xff09;来避免重复计算&#xff0c;将时间复杂度从O(n)优化到O(n)。基本实现步骤初始化窗口指针&#xff1a;通常使用left和right指针表示…

AI 创建学生管理系统

使用腾讯元宝创建&#xff0c;整体效果不错。修正2个bug跑起来&#xff0c;达到了需要的功能先上效果图&#xff1a;按钮分类别配色&#xff0c;界面清爽。喜欢这布局创建过程&#xff1a;prompt: 使用最新稳定vue版&#xff0c;使用pinia存储&#xff0c;基于typescript, 样式…

ASP.NET Core 中的简单授权

ASP.NET Core 中的授权通过 [Authorize] 属性及其各种参数控制。 在其最基本的形式中&#xff0c;通过向控制器、操作或 [Authorize] Page 应用 Razor 属性&#xff0c;可限制为仅允许经过身份验证的用户访问该组件。 使用 [Authorize] 属性 以下代码限制为仅允许经过身份验证…

leetcode 493 翻转对

一、题目描述 二、解题思路 本题的思路与逆序数的思路相似&#xff0c;采用归并排序的思路来实现。leetcode LCR 170.交易逆序对的总数-CSDN博客 注意&#xff1a;但是逆序数的ret更新在左、右区间合并时更新&#xff0c;但本题ret更新在左、右区间合并前更新。 三、代码实现…

初识微服务-nacos配置中心

配置中心 概述 配置中心是微服务中不可或缺的组件&#xff0c;因为如果没有配置中心&#xff0c;那么各个微服务的的配置信息无法得到统一和管理&#xff0c;会变得冗余。 :::color4 配置中心是用于管理应用程序配置信息的工具 集中管理配置&#xff1a;解决微服务架构下配置分…