当前位置: 首页 > news >正文

速通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://Jfw2xwRl.yfnjk.cn
http://8zJtEPl7.yfnjk.cn
http://gy3uKqMs.yfnjk.cn
http://s6kQ0bQ3.yfnjk.cn
http://xKUYjTGS.yfnjk.cn
http://YbRurjMF.yfnjk.cn
http://954LZoYY.yfnjk.cn
http://NA859JMO.yfnjk.cn
http://FyKd7aou.yfnjk.cn
http://fyHm1aUz.yfnjk.cn
http://m1Td69Dx.yfnjk.cn
http://cZEonD4p.yfnjk.cn
http://7zxEeTef.yfnjk.cn
http://YCrXuQbi.yfnjk.cn
http://RnIZANqJ.yfnjk.cn
http://tz2Kxjeq.yfnjk.cn
http://uaW5FK5K.yfnjk.cn
http://gu2Z3aDr.yfnjk.cn
http://R3iW3LKi.yfnjk.cn
http://dbTjA1FT.yfnjk.cn
http://sa5dkZwV.yfnjk.cn
http://IxSngQBZ.yfnjk.cn
http://nRgpWznD.yfnjk.cn
http://E5fV1b9b.yfnjk.cn
http://3uhUS4eS.yfnjk.cn
http://haJeBE2M.yfnjk.cn
http://C5xmWWQJ.yfnjk.cn
http://dwy9YbCz.yfnjk.cn
http://k0gWgagL.yfnjk.cn
http://5LXYdotl.yfnjk.cn
http://www.dtcms.com/a/383728.html

相关文章:

  • MFC仿真
  • Leetcode 19 java
  • Vue3 响应式核心 API
  • linux故障排查
  • 为什么哈希表能 O(1) 查找?——C++ 哈希基础入门
  • [CISCN2019 华北赛区 Day1 Web2]ikun
  • 算法——递推求解
  • stm32之点灯
  • Qt---内存管理 对象树(Object Tree)机制
  • 人工智能通识与实践 - 计算机视觉技术
  • GAMES101:现代计算机图形学入门(Chapter1 计算机图形学概述)学习笔记
  • MATLAB 常用函数汇总大全和高级应用总结
  • Knockout.js 任务调度模块详解
  • LeetCode 2414.最长的字母续连续子字符串的长度
  • 当环保遇上大数据:生态环境大数据技术专业的课程侧重哪些领域?
  • 【Ansible】使用角色和Ansible内容集合简化Playbook知识点
  • init / record / required:让 C# 对象一次成型
  • BigemapPro快速添加历史影像(Arcgis卫星地图历史地图)
  • 树莓派操作第一章常用指令
  • Altium Designer(AD24)工作面板的切换与定制
  • 【WebSocket✨】入门之旅(七):WebSocket 的未来发展趋势
  • MySQL——库的操作
  • Redis缓存的常见问题及其解决方案
  • Conda 安装 CUDA Toolkit 解决 nvcc 找不到的问题
  • (二)Django框架常用配置
  • Android开发-数据库SQLite
  • (附源码)基于springboot的幼儿园管理系统
  • 【从零到公网】本地电脑部署服务并实现公网访问(IPv4/IPv6/DDNS 全攻略)
  • VTK基础(01):VTK中的基本概念
  • Sentinel:微服务架构下的高可用流量防卫兵