洛谷U389682 最大公约数合并

这道题最后有一个性质没有想出来,感觉还是有一点遗憾。

性质一、贪心是不对的

8 11 11 16

虽然第一次选择8和16合并是最优的,但是如果合并两次的话8 11 11是最优的。

性质二 、有1的情况就是前k+1个,也就是说,很多情况下取前k+1都是最优的

性质三 如果某个数前面有它的因子,那么合并的时候可以不对 a 1 a_1 a1产生任何影响。同时,如果 b m o d a = 0 , b > a b \mod a=0,b>a bmoda=0,b>a那么 b b b一定比 a a a后合并,也就是说无影响合并只会发生在相同的数之间,因此我们把无影响的数提出来考虑,所以剩下的都是不同的。

性质四 如果所有的数都不同,那么全部都只会和 a 1 a_1 a1合并。在原来的数列中考虑合并形成的连通块。在连通块大小为2的情况时。设 a 1 < x < y a1<x<y a1<x<y,那么有 y − x > = g c d ( x , y ) y-x>=gcd(x,y) yx>=gcd(x,y)所以, x + y − g c d ( x , y ) > = 2 x > a 1 + x x+y-gcd(x,y)>=2x>a_1+x x+ygcd(x,y)>=2x>a1+x,不如直接合并 a 1 a_1 a1 x x x。现在考虑连通块大小超过2的情况。假设某个连通块不包含 1 1 1,那么我们可以通过合并使得该联通块剩下两个数,其中有一个还没有与任何的数合并。Case 1: x < a 1 < y x<a_1<y x<a1<y,这时应该合并 x , a 1 x,a_1 x,a1最优,与原假设矛盾。Case 2: a 1 < = x < = y a_1<=x<=y a1<=x<=y,这时也是合并 a 1 , x a_1,x a1,x更优,所以假设错误。

所以,现在应该把前面有相同的和剩下的全部不同的数分成两个组,然后给这两组分配合并次数,难点就是要怎么求在给定的次数时全部不同组的选择方法,但是我没有坚定的往这个方面想。

性质五 假设给全部不同的数合并 k k k次,那么必然选择 1 , 2 , . . . , k − 1 1,2,...,k-1 1,2,...,k1,只有第 k k k个是不确定的。考虑选择 a , b , c , d ( a < b < c < d ) a,b,c,d(a<b<c<d) a,b,c,d(a<b<c<d)的情况,那么合并如果是 a , c , d a,c,d a,c,d的话,那么 c o s t ( a , c , d ) − c o s t ( a , b , c ) = d − b + g c d ( a , c , d ) − g c d ( a , b , c ) > = g c d ( b , c ) + g c d ( c , d ) + g c d ( a , c , d ) − g c d ( a , b , c ) > 0 cost(a,c,d)-cost(a,b,c)=d-b+gcd(a,c,d)-gcd(a,b,c)>=gcd(b,c)+gcd(c,d)+gcd(a,c,d)-gcd(a,b,c)>0 cost(a,c,d)cost(a,b,c)=db+gcd(a,c,d)gcd(a,b,c)>=gcd(b,c)+gcd(c,d)+gcd(a,c,d)gcd(a,b,c)>0,所以只用考虑第k个点怎么选,而且枚举范围有 a [ i ] − a [ k − 1 ] < g c d ( a 1 , a 2 , . . . , a k − 1 ) a[i]-a[k-1]<gcd(a_1,a_2,...,a_{k-1}) a[i]a[k1]<gcd(a1,a2,...,ak1),这样显然是不超过 O ( n l o g n ) O(nlogn) O(nlogn)的。

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

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

相关文章

0000电子技术基础概述

数电 未来课的基础 以前是模块、器件级 现在是 系统级 价格、性能、 技术更新快速的好处&#xff1a;得到了实惠 坏处&#xff1a;工程师需要不断地学习&#xff0c;不变就容易out&#xff0c;要用发展的眼光看待问题 了解基础知识、还要有前沿概念。 理论课、实践课要相结…

CNN神经网络调参技巧

一、基本网络结构 1.若干块&#xff0c;每块&#xff1a;卷积BN激活池化 2.若干块&#xff0c;每块&#xff1a;卷积激活Dropout 3.若干块&#xff0c;每块&#xff1a;fc激活Dropout 二、技巧 1. 损失曲线 常见曲线是先快速下降后趋于平缓&#xff0c;如果线性下降&…

mybatisplus自带的雪花算法(IdType.ASSIGN_ID)无法自动生成弊端缺点,以及改进方法

前言 今日在使用mybatisplus的雪花算法自动给id赋值时发现怎么都是null的情况&#xff0c;这尼玛测了半天&#xff0c;终于发现巨坑&#xff0c;废话不多说&#xff0c;直接上干货 IService.save 只有调用IService中的save方法才能正常生成id&#xff0c;像IService.saveBatc…

Vue移动端动态表单生成组件

FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单生成组件。支持6个UI框架&#xff0c;适配移动端&#xff0c;并且支持生成任何 Vue 组件。内置20种常用表单组件和自定义组件&#xff0c;再复杂的表单都可以轻松搞定。 帮助文档 | 源码下载…

Day35:2734. 执行字串操作后的字典序最小字符串

Leetcode 2734. 执行字串操作后的字典序最小字符串 给你一个仅由小写英文字母组成的字符串 s 。在一步操作中&#xff0c;你可以完成以下行为&#xff1a; 选择 s 的任一非空子字符串&#xff0c;可能是整个字符串&#xff0c;接着将字符串中的每一个字符替换为英文字母表中的前…

视频技术朝着8K超高清方向发展,安防监控领域将迎来怎样变化?

一、背景 随着科技的日新月异&#xff0c;视频技术已逐渐成为我们日常生活中不可或缺的一部分。从娱乐、教育到安全监控&#xff0c;视频技术无处不在&#xff0c;并以其独特的方式影响着我们的生活方式。本文将探讨视频技术的发展趋势&#xff0c;并重点关注其在监控领域的应…

【ai】李沐 动手深度学学v2 环境安装:anaconda3、pycharm、d2

cuda-toolkit cuda_12.5.0_windows_network.exe 官方课程网站 第二版资源下载release版本 pycharm版本 李沐 【动手学深度学习v2 PyTorch版】 课程笔记 CUDA 选择11, 实际下载 12.5.0

C++里的异同点

文章目录 1. 可以在构造函数和析构函数中调用虚函数吗&#xff1f;2. 类对象的内存模型&#xff08;内存布局&#xff09;3. 菱形继承问题&#xff08;钻石问题&#xff09;如何解决&#xff1f;4. 堆和栈内存区别5. static_cast和dynamic_cast异同6. 智能指针的实现机制7. 移动…

无需劳师动众,让石油化工DCS集散控制系统轻松实现无线传输!

石油化工中,为了保证较高的可靠性和安全性,大量使用的是DCS集散控制系统。与FCS现场总线的“现场采集,转换为数字信号来集中传输”不同,DCS系统为了避免由于线缆断裂或者节点问题导致整个控制系统失灵,采用“分散传输,集中采集”的方式,即每个传感器通过4-20mA的模拟量通…

custom_evaluator.py

import numpy as np from pycocotools.cocoeval import COCOeval# 自定义COCOeval类&#xff0c;继承自COCOeval class CustomCOCOeval(COCOeval):# 重写computeIoU方法def computeIoU(self, imgId, catId):p self.paramsif p.useCats:gt self._gts[imgId, catId]dt self._d…

Linux——进程练习

1、使用进程知识点&#xff0c;尝试完成如下功能: 输入n&#xff0c; 动态生成n个子进程&#xff0c;并打印输出各自进程的pid号。 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h>#include <sys/types.h>in…

Linux下创建Oracle数据库的实例

1.安装前准备 1.1.安装前准备一 安装前准备信息 数据库版本&#xff1a;Oracle19.16.0.0.0Linux版本&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo)主机名&#xff1a;ace-test-84IP&#xff1a;10.10.10.212SID&#xff1a;dcpfareintservice_name&#x…

电机应用相关名词介绍

1.电机转速 定义&#xff1a;电机转速指电机工作时旋转的速度&#xff0c;是衡量电机性能的重要指标之一。 单位&#xff1a; 每分钟转数&#xff08;RPM&#xff09;&#xff1a;即Revolutions Per Minute&#xff0c;表示电机每分钟旋转的圈数。 每秒转数&#xff08;RPS…

【小工具】Unity批量删除物体上引用丢失的脚本

介绍 Unity批量删除物体上引用丢失的脚本 使用场景 当在外部导入资源时会造成物体上挂载的脚本引用丢失&#xff0c;一个个删除比较麻烦&#xff0c;可以借用这个工具快速实现 工具原理 继承EditorWindow绘制一个自定义的编辑器窗口 加载Assets目录下所有预制体 获取其所有…

畜牧机械5G智能制造工厂物联数字孪生平台,推进制造业数字化转型

畜牧机械5G智能制造工厂物联数字孪生平台&#xff0c;推进制造业数字化转型。畜牧机械5G智能制造工厂物联数字孪生平台&#xff0c;是近年来制造业数字化转型的杰出代表。工业物联数字孪生平台平台集成了物联网、大数据、云计算和人工智能等先进技术&#xff0c;通过高速、低延…

elk对于集群实例的日志的整合-基于filebeat+k8s采集日志

说明&#xff1a;基于filebeat采集日志 概述&#xff1a; 在Kubernetes环境中&#xff0c;Filebeat不需要和业务服务部署在同一个容器中。通常的做法是将Filebeat作为一个DaemonSet部署在集群中&#xff0c;这样它可以在每个节点上运行一个实例&#xff0c;并从所有容器中收集…

Ubuntu下TensorRT与trtexec工具的安装

新版&#xff08;这里测试的是10.1版&#xff09;的onnx转tensorrt engine工具trtexec已经集成在TensorRT中&#xff0c;不需要额外单独安装。 教程来源于此网页&#xff1a;https://medium.com/moshiur.faisal01/install-tensorrt-with-command-line-wrapper-trtexec-on-unun…

redis需要知道的点

目录 一、为什么要用缓存 二、使用 Redis有哪些好处 三、什么是 redis&#xff1f; 四、redis和memcached区别 五、为什么redis单线程模型效率也能那么高 六、redis的线程模型 七、redis 6.0 引入多线程 八、为什么Redis需要把所有数据放到内存中&#xff1f; 九、Red…

cad由于找不到mfc140u.dll的解决方法,彻底解决mfc140u.dll丢失问题

在计算机辅助设计&#xff08;CAD&#xff09;的时候&#xff0c;我们可能会遇到各种错误和问题。其中&#xff0c;“CAD由于找不到mfc140u.dll&#xff0c;无法继续执行代码”的错误提示。这个问题可能会导致CAD无法启动运行&#xff0c;因此&#xff0c;我希望通过分享我的经…

site 搜索技巧 指定网站 屏蔽网站

指定某网站内容&#xff1a;site:xxx 屏蔽某网站内容&#xff1a;-site:xxx 例如&#xff1a;搜 springboot项目demo&#xff0c;你想只搜csdn&#xff0c;屏蔽掉博客园&#xff0c;51cto&#xff0c;等&#xff0c;在输入框中输入如下&#xff1a; springboot项目demo site:c…