D - Meeting Bahosain Gym - 102263D

2023-11-15

Essa wanted to meet the most powerful number theorist of all time: Bahosain, but Bahosain does not waste his precious time, so he gave Essa this puzzle in order to test his abilities.

Given two arrays, the second array only has distinct elements, Essa can do the following as many times as he wants to make all numbers in first array equal.

Choose a number from the first array
Add or subtract from it a number in the second array
Replace the number in the first array with the result
Of course, Essa is unworthy of meeting the almighty Bahosain, and he can’t solve this puzzle on his own, so can you help him?
Input
The first line containing two space separated integers n,mn,m (1≤n,k≤1061≤n,k≤106) represent the length of the first and second array.

the second line contains n integers represent the first array (1≤a[i]≤1091≤a[i]≤109)

the third line contains m integers represent the second array (1≤b[i]≤1091≤b[i]≤109)

Output
Print Yes, if it’s possible to make all numbers in first array equal; and No in the opposite case.

Example
Input
5 2
3 6 7 2 5
2 4
Output
No
题意:一次操作就是选择a数组中的一个数,在选择b数组中一个数,a加上或减去b,可以进行任意次操作,使得a数组中数最终都相等,能的话输出Yes,否则输出No。
题解:本来想的是找到a数组中的最大值,然后分别找到max-a[i],找到他们的最大公约数gg,然后在b数组中找看是否存在gg,如果存在输出yes,否则输出No,但是wa了下面是错误的代码:

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
const int N=1e6+10;
ll a[N],b[N];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    ll n,m,i;
    cin>>n>>m;
    for(i=1;i<=n;i++) cin>>a[i];
    for(i=1;i<=m;i++) cin>>b[i];
    if(n==1)
    {
        printf("Yes\n");
        return 0;
    }
    ll maxx=-1;
    for(i=1;i<=n;i++)
       if(a[i]>maxx) maxx=a[i];
    ll gg=0;
    for(i=1;i<=n;i++)
        if(a[i]!=maxx)
          gg=__gcd(gg,maxx-a[i]);
    if(gg==0) printf("Yes\n");//所有值都相等
    else
    {
        int flag=0;
        for(i=1;i<=m;i++)
        {
            if(b[i]==gg)
            {
                flag=1;
                break;
            }
        }
        if(flag==0) printf("No\n");
        else printf("Yes\n");
    }
    return 0;
}

后来想了想,发现如果有gg的情况下一定是可以的,但是没有gg的情况下不一定不行,;例如a[]=“3 6 9” b[]=“2 8 11” a中的最大公约数是3,但是b中不含3所以输出No,但是b[2]-b[1]-b[0]=1,如果可以组成1的话必定是可以的,所以正确答案应该输出Yes。造成这种错误的原因就是不含有但是几个数可以通过加减等操作可以组成的也饿同样可以的,但是因为情况太多,无法讨论,所以应该反着思考,看找b的最大公约数是否能行。
gcd(b[0],b[1],b[2],b[3],……,b[n])
如果可以相等的话
max-a[i]=k1 * b[1] + k2 * b[2] + ……+ kn * b[n] ;
= k * (gcd);
所以只有max-a[i]能够整除gcd的话才能写成相等的,否则不能。
这里我选择了用a中的最大值减去各个值,但是选择哪个都是一样的,但是我不太清楚怎么证明,所以没证明……,
下面是AC代码:

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<set>
#define ll long long
using namespace std;
const int N=1e6+10;
ll a[N],b[N];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    ll n,m,i;
    cin>>n>>m;
    for(i=1;i<=n;i++) cin>>a[i];
    for(i=1;i<=m;i++) cin>>b[i];
    if(n==1)
    {
        printf("Yes\n");
        return 0;
    }
    ll maxx=-1;
    for(i=1;i<=n;i++)
       if(a[i]>maxx) maxx=a[i];
    ll gg=0;
    for(i=1;i<=n;i++)
        gg=__gcd(gg,b[i]);
        int flag=0;
        for(i=1;i<=n;i++)
            if((maxx-a[i])%gg!=0) flag=1;
        if(flag==0) printf("Yes\n");
        else printf("No\n");
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

D - Meeting Bahosain Gym - 102263D 的相关文章

  • JAVA中的比较器

    引出 传统的对象之间是一般都是 或者 看对象是否为同一个 而没有存在 gt 或者 lt 类似的 但有的时候我们需要根据 对象的某一个属性进行排序 怎么办呢 这个时候就引出来 比较器了 主要是两个接口 Comparable和Comparato
  • python 获取指定文件夹里面的图片文件的信息

    import time import exifread import os 切换到图片文件夹 由于我的这个文件夹里全部是图片文件所以无需判断直接遍历 os chdir news aa 遍历所有图片文件 for x y z in os wal
  • 简单的动态规划——装箱问题

    装箱问题 告诉你箱子的容积为多少 告诉你有N件物品和每一件物品的体积 问如何选择物品才能令箱子的剩余容积最小 搜索递归 include
  • spring动态修改bean

    spring动态修改bean RequestMapping ok public Object test2 ApplicationContext applicationContext SpringContextUtil getApplicat
  • android canvas 转bitmap_Android 雪花飘落动画效果 自定义View

    在码农的世界里 优美的应用体验 来源于程序员对细节的处理以及自我要求的境界 年轻人也是忙忙碌碌的码农中一员 每天 每周 都会留下一些脚印 就是这些创作的内容 有一种执着 就是不知为什么 如果你迷茫 不妨来瞅瞅码农的轨迹 本文章实现的效果如下
  • SpringBoot常用定时器库整合(Java Timer、线程池、Quartz、Task)

    简介 定时器可用于做数据统计 年度报表 定时刷新token等 本章主要描述以下常用定时器库的用法 1 Java Timer 2 Java 线程池 3 Quartz 4 Spring Task Java Timer定时器用法 在java中自带
  • 测度与积分 Measures and Integration学习笔记

    学习笔记1 可测空间 可测空间 Measurable Spaces sigma algebra 希望能坚持学习下去 可测空间 Measurable Spaces
  • delphi测试服务器响应时间,TIdHttp.Post响应时间太长

    我正在使用Delphi XE6 我已阅读以下所有内容 我知道相关时间和性能因素包括 1 HTTPOptions 2 TIdHttp Request选项 内容类型 编码 尤其是连接超时设置 3 iCsslIOHandler SSLOption

随机推荐

  • 多层感知器介绍

    一 概览 现实世界中很多真实的问题都不是线性可分的 即无法使用一条直线 平面或者超平面分割不同的类别 其中典型的例子是异或问题 Exclusive OR XOR 即假设输入为x1和x2 如果它们相同 即当x1 0 x2 0或x1 1 x2
  • Oracle19c数据库服务

    本节整理了Oracle在Windows下运行所安装的服务 桌面点击 我的电脑 管理 服务和应用程序 服务 进入下图界面 然后找到以Ora字段开头的服务就是Oracle的服务 如下图 1 OracleJobSchedulerORCL 描述 O
  • centos7下 k8s的安装 2023年8月6日

    一 基本信息介绍 kubernetes 1 27 4 系统 centos7 etcd 3 5 7 containerd 1 6 20 runc 1 1 5 建议内核升级到5 10 本次安装就只有一个master和两个个node节点 192
  • 空间配置器

    空间配置器 一 空间配置器概述 STL的操作对象都放在容器内 而容器需要一定的配置空间来存放数据资料 而空间配置器就负责给容器分配空间 SGI STL分配的空间是内存 其实基本都是内存吧 二 空间配置器的标准接口 1 必要接口 根据容器的需
  • centos解决mysql-bin.000*占用超大空间的问题

    本站 也就是安全者 网站数据库挂了一下午 也没时间处理 晚上回来后尝试restart mysql 发现一直提示shutting down 关闭不了 也stop不了 服务器重启也不行 可以确信肯定是mysql出问题了 进入mysql的data
  • HTTPS的加密过程

    HTTPS HTTPS即加密的HTTP HTTPS并不是一个新协议 而是HTTP SSL TLS 原本HTTP先和TCP 假定传输层是TCP协议 直接通信 而加了SSL后 就变成HTTP先和SSL通信 再由SSL和TCP通信 相当于SSL被
  • 【数据结构与算法——TypeScript】数组、栈、队列、链表

    数据结构与算法 TypeScript 算法 Algorithm 的认识 解决问题的过程中 不仅仅 数据的存储方式会影响效率 算法的优劣也会影响效率 什么是算法 定义 一个有限指令集 每条指令的描述不依赖于言语 编写指令 java c ts
  • (十八)Mybatis的XML文件中不允许出现“>“

    mybatis XML文件中不允许出现 gt lt 之类的符号 需要转义 是可以正常 关于elasticsearch中 gt gte lt lte缩写的含义
  • 反序列化漏洞原理/防御

    序列化就是将对象转换成字节流 可以更方便的将数据保存到本地文件 反序列化就是将字节流还原成对象 Java中提供了两个接口来支持序列化 ObjectIutputStream 和ObjectOutputStream 序列化相对安全 问题出在反序
  • html烟花特效,发射粒子特效,爱心特效,动态祝福、节日祝福网页,时间罗盘,黑客帝国代码雨、文字闪烁、表白爱心网页等等(附下载链接)

    粒子炫酷特效网页 html css js 大家都觉得程序员的工作很枯燥乏味 今天我就带大家看看程序员开发的那些漂亮的网页效果 点我下载源码 1 烟花特效 粒子特效 节日祝福 表白爱心网页 动态泡泡网页 动态蝴蝶网页 七叶草动态飘落网页 时间
  • Linux学习-Linux系统及编程基础笔记

    useradd zhangsan passwd zhangsan visudo往 etc sudoers文件中添加zhangsan visudo 找到如下的行 root ALL ALL ALL 往该行下面添加zhangsan zhangsa
  • 深度学习与机器学习的思考

    需要一些传统图像处理知识为佳 end to end 端到端 说的是 输入的是原始数据 始端 然后输出的直接就是最终目标 末端 中间过程不可知 因此也难以知 就此 有人批评深度学习就是一个黑箱 Black Box 系统 其性能很好 却不知道为
  • PostgreSQL 计算逾期率

    描述 计算下ylhx4 cxh xinyanfeature表 小鲨中部分用新颜的数据 中的1999个用户 首次借款第一期 第二期的d0和d15的逾期率 还款信息在transformdata xsfinrak表 小鲨用户 中 psperdno
  • 中点分割裁剪算法

    中点分割裁剪算法 python 实验目的 采用中点分割方法找到距离线段顶点最近的可见点 找到后 进行绘制 即可实现直线段在裁剪窗口的裁剪显示 算法思想 设要裁剪的线段是P1P2 中点分割算法可分成两个平行的过程进行 即从P1点出发找出离P1
  • Git基础操作:本地分支和远程分支改名

    相信聪明的你 直接看代码就能看懂 本地分支改名 git branch m feature add header2 feature add header 删除远程分支 git push origin feature add header2 本
  • FlashAttention

    一 论文题目 发表处 时间 FlashAttention Fast and Memory Efficient Exact Attention with IO Awareness 二 主要方向 新型注意力机制 三 细化任务 一种具有 IO 感
  • 2022深圳杯C题思路解析

    题目描述 继续更新 再更问题三 继续更新第一问 第四问 1 2 问题重述 在制定电动车调度方案时 必须考虑充 换电池的时间成本 从而提出了新 的车辆运输选址及调度问题 1 已知自动驾驶电动物料车在取料点 P 和卸货点 D 之间往复运送物料
  • Qt 对象树

    作者 billy 版权声明 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 Object Tree Model 先来看一下 QObject 的构造函数 通过帮助文档我们可以看到 QObject 的构造函数中会传入一个 P
  • Linux ./configure --prefix 命令是什么意思?

    Linux configure prefix 命令是什么意思 源码的安装一般由3个步骤组成 配置 configure 编译 make 安装 makeinstall Configure是一个可执行脚本 它有很多选项 在待安装的源码路径下使用命
  • D - Meeting Bahosain Gym - 102263D

    Essa wanted to meet the most powerful number theorist of all time Bahosain but Bahosain does not waste his precious time