2023牛客暑期多校训练营10 C Multiplication(复杂度证明)

拿了个一血,队友说复杂度可能有问题,我就来证一证
做法就不说了,题解里有,贴个代码

def gcd(a,b):if (b==0):return areturn gcd(b,a%b)
n=int(input())
k=int(input())
ans=0
for x in range(0,102):for y in range(0,102-x):xx=10**xyy=10**ya=yy-kb=k*xx-1if (a<=0 and b<=0):a=-ab=-bif (a<0 or b<0): continueg=gcd(a,b)if (g==0):continuea//=gb//=gt=1e100if (a>0):t=min(t,(yy-1)//a)if (b>0):t=min(t,(xx-1)//b)if (a*xx+b>0):t=min(t,n//(a*xx+b))if (t==1e100):continuea*=tb*=tif (a<(yy//10) or b<(xx/10)):continuetmp=a*xx+bans=max(ans,tmp)
print(ans)

其实题解里的 O ( L 4 l o g L ) O(L^4logL) O(L4logL)有点假,
枚举 L 2 L^2 L2 g c d gcd gcd理论次数 l o g ( 1 0 L ) = L l o g L log(10^L)=LlogL log(10L)=LlogL,还有除法复杂度设为 O ( P ) O(P) O(P)
总复杂度是 O ( L 3 l o g L ⋅ P ) O(L^3logL\cdot P) O(L3logLP) P 暴力是 L 2 P暴力是L^2 P暴力是L2,应该可以做到 L l o g L LlogL LlogL,所以题解里说的复杂度应该是 O ( L 4 l o g 2 L ) O(L^4log^2L) O(L4log2L)
如果用 s t e i n stein stein算法求 g c d gcd gcd的话是比较严格的 O ( L 4 l o g L ) O(L^4logL) O(L4logL),因为只有除二和减法,都是 O ( L ) O(L) O(L)的,但会跑满,肯定很慢

回到正文,先贴式子 ( 1 0 y − k , k ⋅ 1 0 b − 1 ) (10^y-k,k\cdot 10^b-1) (10yk,k10b1)
如果 m i n ( x , y ) < 18 min(x,y)<18 min(x,y)<18做一次高精度除法以后就相当于普通 g c d gcd gcd了,复杂度 O ( P + l o g ( 1 0 18 ) ) O(P+log(10^{18})) O(P+log(1018))
否则假设 x > y x>y x>y,该式 = ( 1 0 y − k , k 2 ⋅ 1 0 x − y − 1 ) =(10^y-k,k^2\cdot10^{x-y}-1) =(10yk,k210xy1),如果把 x + y x+y x+y作为整体的话,每次都会减至少 18 18 18,否则会跳转上一种情况
总次数 200 / 18 < 12 200/18<12 200/18<12,抛开枚举的复杂度 O ( 12 P ) O(12P) O(12P),实际上比如 100 , 100 100,100 100,100这种情况是不可能出现的,我算他是 ( 100 + 100 ) / 18 (100+100)/18 (100+100)/18,实际只有一次
如果打个表,这个数不会超过 7 7 7(我没打,毛估估)
x < = y x<=y x<=y其实也一样,因为哪怕 k 12 k^{12} k12也是个无关紧要的数,远小于 1 0 18 10^{18} 1018
故总复杂度 O ( 12 ⋅ L 2 P ) O(12\cdot L^2P) O(12L2P),其实还远跑不满,这只是我用纯数学能证到的地步

回头一看发现傻逼了,根本不需要这么麻烦的证明
不妨令 x > y x>y x>y,若 x > 2 y x>2y x>2y,取模后 x x x规模一定减半
x < = 2 y x<=2y x<=2y,根据 ( 1 0 y − k , k ⋅ 1 0 b − 1 ) = ( 1 0 y − k , k 2 ⋅ 1 0 x − y − 1 ) (10^y-k,k\cdot 10^b-1)=(10^y-k,k^2\cdot10^{x-y}-1) (10yk,k10b1)=(10yk,k210xy1) x − y x-y xy后规模一定减半
也不用按 18 18 18来分块了,每次高精除的复杂度和长度是相关的(应该可以视作 P = L l o g L P=LlogL P=LlogL),
故总复杂度 O ( L 2 ⋅ ( L + L / 2 + L / 4 + . . . ) l o g L ) = O ( L 3 l o g L ) O(L^2\cdot (L+L/2+L/4+...)logL)=O(L^3logL) O(L2(L+L/2+L/4+...)logL)=O(L3logL)

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

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

相关文章

java八股文面试[数据结构]——ArrayList和LinkedList区别

ArrayList和LinkedList的异同 二者的线程都不安全&#xff0c;相对线程安全的Vector,执行效率高。此外&#xff0c;ArrayList时实现了基于动态数组的数据结构&#xff0c;LinkedList基于链表的数据结构&#xff0c;对于随机访问get和set&#xff0c;ArrayList觉得优于LinkedLis…

ubuntu上使用osg3.2+osgearth2.9

一、介绍 在ubuntu上使用osgearth加载三维数字地球&#xff0c;首先要有osg和osgearth的库&#xff0c;这些可以直接使用apt-get下载安装&#xff0c;但是版本有些老&#xff0c;如果需要新版本的就需要自己编译。 #查看现有版本 sudo apt-cache madison openscenegraph #安装…

C#实现简单TCP服务器和客户端网络编程

在C#中进行网络编程涉及许多类和命名空间&#xff0c;用于创建和管理网络连接、传输数据等。下面是一些主要涉及的类和命名空间&#xff1a; System.Net 命名空间&#xff1a;这个命名空间提供了大部分网络编程所需的类&#xff0c;包括&#xff1a; IPAddress&#xff1a;用于…

2023年高教社杯数学建模思路 - 复盘:人力资源安排的最优化模型

文章目录 0 赛题思路1 描述2 问题概括3 建模过程3.1 边界说明3.2 符号约定3.3 分析3.4 模型建立3.5 模型求解 4 模型评价与推广5 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 描述 …

第2篇:ESP32 helloword第一个程序示范点亮板载LED

1.选择ESP32开发板 2.寻找串口号&#xff0c;win10自动安装驱动 手动安装驱动参考&#xff1a; 百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可…

markdown样式覆盖的解决方案

背景 最近公司在搞的ai项目中遇到了一个场景&#xff0c;公司一个新的ai项目在最开始搭建项目的直接引用了reset.css&#xff0c;项目开发到一半需要引用react-markdown插件展示gpt返回的内容&#xff0c;但是渲染的时候发现例如h1、h2、li、ui标签等等的默认样式由于reset的原…

ipad可以用别的品牌的手写笔吗?开学平价电容笔推荐

开学需要买什么呢&#xff1f;随着科技的不断进步&#xff0c;各种类型的iPad电容笔应运而生。一支好的电容笔&#xff0c;不仅能大大提高我们的工作效率&#xff0c;而且能大大提高我们的生产力。平替的这款电容笔&#xff0c;不管是在技术上&#xff0c;还是在品质上&#xf…

关于路由器和DNS解析的一些新理解

其实我本人对于交换机和路由器这些网络硬件是比较感兴趣的&#xff0c;也在一点一点的学习相关知识&#xff0c;每次解决一个问题&#xff0c;就让我对一些事情有新的思考。。 今天前台同事&#xff0c;的机器突然上不了网&#xff0c;&#xff0c;和领导一起去看了一波&#…

Vue-12.集成postcss.config.js

PostCSS 介绍 PostCSS 是一个用于处理样式的工具&#xff0c;可以通过插件来定制其行为。以下是一些常用的 PostCSS 插件和 API 的介绍&#xff1a; Autoprefixer: 这是一个流行的 PostCSS 插件&#xff0c;用于自动添加浏览器前缀&#xff0c;以确保您的样式在不同浏览器中具…

jmeter CSV 数据文件设置

创建一个CSV数据文件&#xff1a;使用任何文本编辑器创建一个CSV文件&#xff0c;将测试数据按照逗号分隔的格式写入文件中。例如&#xff1a; room_id,arrival_date,depature_date,bussiness_date,order_status,order_child_room_id,guest_name,room_price 20032,2023-8-9 14:…

向量数据库 Milvus:实现高效向量搜索的技术解析

引言 随着人工智能、机器学习和深度学习技术的不断发展&#xff0c;越来越多的应用开始使用向量表示数据。向量数据具有高维、稀疏和相似性等特点&#xff0c;传统的关系型数据库和键值存储在处理这类数据时面临许多挑战。为了满足大规模、高并发的向量搜索需求&#xff0c;出现…

C++--动态规划两个数组的dp问题

1.最长公共子序列 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串…

Java Heap Space(堆内存溢出)问题 ,想找一个扫描代码的工具

以下是几个受欢迎的工具&#xff1a; FindBugs&#xff1a;它是一个静态代码分析工具&#xff0c;专门用于查找 Java 代码中潜在的 bug 和问题。它可以帮助您发现一些常见的内存泄漏和资源管理问题。 PMD&#xff1a;类似于 FindBugs&#xff0c;PMD 也是一个静态代码分析工具…

Nginx+Tomcat负载均衡、动静分离

目录 NginxTomcat负载均衡、动静分离群集 Nginx配置反向代理的主要参数 动静分离原理 反向代理两种模式 七层反向代理 四层反向代理 Nginx 负载均衡模式&#xff08;调度算法&#xff09; nginx的会话保持 为什么使用动静分离 为什么使用负载均衡 正向代理和反向代理…

Unity 之NavMeshAgent 组件(导航和路径寻找的组件)

文章目录 **作用**&#xff1a;**属性和方法**&#xff1a;**用途**&#xff1a;**注意事项**&#xff1a; NavMeshAgent 是Unity引擎中用于导航和路径寻找的组件。它可以使游戏对象在场景中自动找到可行走的路径&#xff0c;并在避免障碍物的情况下移动到目标位置。 以下是关于…

在当今信息化社会中的安全大文件传输

随着科技的不断进步&#xff0c;数据已经成为各个领域和行业的宝贵财富。然而&#xff0c;随之而来的数据传输和交换问题也成为一个日益突出的挑战。在这篇文章中&#xff0c;我们将探讨在当今信息化社会中的安全大文件传输的重要性&#xff0c;以及如何应对传统传输方式所面临…

穿起“新架构”的舞鞋,跳一支金融数字化转型的华尔兹

华尔兹&#xff0c;是男女两位舞者&#xff0c;通过形体的控制&#xff0c;舞步技巧的发挥&#xff0c;完美配合呈现而出的一种舞蹈形式。华尔兹舞姿&#xff0c;如行云流水、潇洒自如、飘逸优美&#xff0c;素有“舞中皇后”的美称。 在跳华尔兹的时候&#xff0c;如果舞者双…

SQL 盲注

问题描述&#xff1a; 解决方案&#xff1a; 通过建立过滤器方法 添加拦截器&#xff1a; web.xml 文件配置拦截器 <filter><filter-name>sqlFilter</filter-name><filter-class>com.fh.filter.SqlFilter</filter-class></filter> pack…

vue3 03-ref函数使用

使用ref创建响应式数据 只支持 简单or 复杂 数据转换 使用ref&#xff1a; 1.导入ref函数 2.创建响应式数据 3.返回数据 4.展示内容 <template><p> 年龄:{{ count }}</p><button click"count">加一岁</button><button click"…

Vue与React的对比(API)

组件传值 VUE // 父组件 <GoodsList v-if"!isGoodsIdShow" :goodsList"goodsList"/> // 子组件 -- 通过props获取即可 props: {goodsList:{type:Array,default:function(){return []}}}REACT // 父组件 export default function tab(props:any) {…