数论补充 之 前后缀分解问题

文章目录

  • [0,i-1] 和 [i+1,n-1] 共同作用
    • 3334,数组的最大因子得分
    • 238.除自身以外数组的乘积

对于前缀分解问题,我愿把它分为几个大问题:[0,i] 或 [i,n-1] 或 [l,r],或 [0,i-1] 和 [i+1,n-1] 共同作用的问题

一般都是求解区间的和,乘积,GCD,LCM

[0,i-1] 和 [i+1,n-1] 共同作用

3334,数组的最大因子得分

3334,数组的最大因子得分

在这里插入图片描述

思路分析:对于这题,首先我们得知道 GCD(a,b,c)= GCD(GCD(a,b),c), LCM(a,b,c) = LCM(LCM(a,b),c)
知道了上面的那个性质之后,我们就应该想到可以使用前后缀分解来完成这个题目,我们 只要记录 nums[i] 前面和后面的各自的前缀和后缀的 GCD 和 LCM 这样我们移除 nums[i] 之后的 GCD和 LCM 就分别是 pregcd[0:i-1] ,sufgcd[i+1,n-1] 以及 prelcm[0:i-1] , suflcm[i+1,n-1]

class Solution:def maxScore(self, nums: List[int]) -> int:# 至多移除1个元素,那么总共会有n+1种可能也就是101种可能而已# 分别使用pregcd,prelcm,sufgcd,suflcmn = len(nums)# 注意这个区间的开长了,lcm(1,x)= x,gcd(0,x) = xpregcd ,prelcm, sufgcd,suflcm = [0]*(n+1),[0]*(n)+[1],[0]*(n+1),[0]*(n)+[1]# 先求解前缀的情况def lcm(a,b):return a*b // math.gcd(a,b)for i in range(n):pregcd[i] = math.gcd(nums[i],pregcd[i-1])prelcm[i] = lcm(nums[i],prelcm[i-1])for i in range(n-1,-1,-1):sufgcd[i] = math.gcd(sufgcd[i+1],nums[i])suflcm[i] = lcm(suflcm[i+1],nums[i])# 不移除元素ans = pregcd[n-1]*prelcm[n-1]# 枚举移除元素for i in range(n):# 精髓在这ans = max(ans,math.gcd(pregcd[i-1],sufgcd[i+1])*lcm(prelcm[i-1],suflcm[i+1]))return ans

238.除自身以外数组的乘积

238.除自身以外数组的乘积

在这里插入图片描述

思路分析:还是采用前后缀分解的思路

class Solution:def productExceptSelf(self, nums: List[int]) -> List[int]:# 相同的思路,采用前后缀分解来完成# 关键点,我们会把数组开长一点,这样就不用单独处理,否则就得处理第一个元素n = len(nums)prec,sufc = [1]*(n+1),[1]*(n+1)for i in range(n):prec[i] = prec[i-1]*nums[i]for i in range(n-1,-1,-1):sufc[i] = sufc[i+1]*nums[i]ans = [1]*nfor i in range(n):ans[i] = prec[i-1]*sufc[i+1]return ans

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

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

相关文章

Winform禁止高分辨下缩放布局成功方法

Windows自动缩放布局会导致窗体上的按钮和文本挤在一起根本看不清楚。 那么该如何解决呢? 具体操作步骤如下: 1、在项目属性上切换到【安全性】菜单,勾选【启用ClickOnce安全设置】,然后立刻取消勾选; 为了生成app.…

matlab齿轮传动

实现齿轮啮合分析,齿轮传动非线性分析,对扭转振动方程组进行求解,可得到齿轮扭转角随时间变化相关参数 列表 齿轮传动非线性分析,对扭转振动方程组进行求解,可得到齿轮扭转角随时间变化相关参数/niu_gou_yuan_Rg.m , …

分享 UniApp 中超好看的卡片阴影样式

在 UniApp 开发中,页面的视觉效果对于提升用户体验至关重要。一个设计精美的卡片样式往往能让页面更加美观和吸引人,而阴影效果则是为卡片增添立体感和层次感的关键元素。今天,我就来和大家分享一个在 UniApp 中实现的卡片阴影样式&#xff0…

教程 | 从零部署到业务融合:DeepSeek R1 私有化部署实战指南

文章目录 1. 什么是 DeepSeek R1?a. 主要介绍a. 版本区别 2. 部署资源要求a. 硬件资源要求 3. 本地安装DeepSeek-R1a. 为什么选择本地部署?b. 部署工具对比c. 演示环境配置d. Ollama安装流程 4. 可视化工具a. 工具对比b. Open-WebUI部署 5. AI API应用a.…

Ubuntu22.04 使用useradd 创建用户时,没有创建家目录时,如何手动创建家目录

测试案例: 使用useradd不加参数创建test目录 如下可以看出使用 useradd 创建用户的时候默认不会创建家目录 rootlocal:~# useradd test rootlocal:~# id test uid1001(test) gid1001(test) groups1001(test) rootlocal:~# cat /etc/passwd | grep test test:x:1001:…

数据结构——队列、哈希存储(2025.2.11)

目录 一、队列 1.定义 2.应用 3.分类 (1)逻辑结构 (2)物理结构 顺序队列 链式队列 二、哈希存储 1.定义 2.哈希冲突 (1)开放定址法 (2)再哈希法 (3&#xf…

【做一个微信小程序】校园地图页面实现

前言 上一个教程我们实现了小程序的一些的功能,有背景渐变色,发布功能有的呢,已支持图片上传功能,表情和投票功能开发中(请期待)。下面是一个更高级的微信小程序实现,包含以下功能:…

css: 针对属性left/right/top/bottom为啥设置transition动画不起作用

如题: 在css的position中 left/right/top/bottom 这类位置属性值如果考虑使用transition来添加动画,transition它会优先考虑left/top属性,而此时transition触发需要的是数值型属性,如果设置为auto则系统会默认不考虑将位置属性添加…

npm安装时无法访问github域名的解决方法

个人博客地址:npm安装时无法访问github域名的解决方法 | 一张假钞的真实世界 今天在用npm install的时候出现了github项目访问不了的异常: npm ERR! Error while executing: npm ERR! /bin/git ls-remote -h -t https://github.com/nhn/raphael.git np…

J Exp Clin Cancer Res (IF:11.4)|上海九院张建军团队发现SPP1+巨噬细胞在头颈癌中的促肿瘤机制

巨噬细胞是肿瘤免疫微环境(TIME)的重要组成部分,在不同癌症类型中表现出功能的多样性以及与预后的紧密联系。在多种癌症中,SPP1巨噬细胞已被发现是一种常见的肿瘤相关巨噬细胞(TAM)亚群,且与不良…

盛铂科技 SCP4006/4018/4040:国产袖珍式功率计 射频微波功率探头 平均功率计

在通信、电子测量等领域,功率计是确保信号稳定、系统高效运行的关键设备。盛铂科技自主研发的 SCP4000 系列自带 USB 接口的袖珍式 CW 信号平均功率计,以其卓越的性能、高性价比和便捷的操作,在众多同类产品中脱颖而出,成为行业内…

【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析①】

ISO 14229-1:2023 UDS诊断【会话控制0x10服务】_TestCase01 作者:车端域控测试工程师 更新日期:2025年02月14日 关键词:UDS诊断、0x10服务、诊断会话控制、ECU测试、ISO 14229-1:2023 TC10-001测试用例 用例ID测试场景验证要点参考条款预期…

Docker+Jenkins自动化部署SpringBoot项目【详解git,jdk,maven,ssh配置等各种配置,附有示例+代码】

文章目录 DockerJenkins部署SpringBoot项目一.准备工作1.1安装jdk111.2安装Maven 二.Docker安装Jenkins2.1安装Docker2.2 安装Jenkins2.3进入jenkins 三.Jenkins设置3.1安装jenkins插件3.2全局工具配置全局配置jdk全局配置maven全局配置git 3.3 系统配置安装 Publish Over SSH …

基于角色访问控制的UML 表示

Michael E. Shin、Gail-Joon Ahn 著,UMLChina 译 摘要 在基于角色访问控制(role-based access control,RBAC)中,权限和角色相关,用户被当作相应角色的成员而获得角色的权限。RBAC 背后的首要动机是为了简…

大数据SQL调优专题——Hive执行原理

引入 Apache Hive 是基于Hadoop的数据仓库工具,它可以使用SQL来读取、写入和管理存在分布式文件系统中的海量数据。在Hive中,HQL默认转换成MapReduce程序运行到Yarn集群中,大大降低了非Java开发者数据分析的门槛,并且Hive提供命令…

WEB安全--SQL注入--INTO OUTFILE

一、INTO OUTFILE 函数语法: SELECT column1, column2, INTO OUTFILE file_path FROM your_table WHERE your_conditions; 使用此方式在SQL注入的过程中可以: 1、上传shell得到数据库的后端的操作权限 2、爆出数据库的信息 二、使用该函数的条件&#…

计算机网络(1)基础篇

目录 1.TCP/IP 网络模型 2.键入网址--->网页显示 2.1 生成HTTP数据包 2.2 DNS服务器进行域名与IP转换 2.3 建立TCP连接 2.4 生成IP头部和MAC头部 2.5 网卡、交换机、路由器 3 Linux系统收发网络包 1.TCP/IP 网络模型 首先,为什么要有 TCP/IP 网络模型&a…

【C#零基础从入门到精通】(七)——C#数据转换

【C#零基础从入门到精通】(七)——C#数据转换 在 C# 中,数据转换是将一种数据类型的值转换为另一种数据类型的过程。这在编程中非常常见,比如在不同类型的数据进行运算、传递参数或者存储时,往往需要进行数据转换。C# 的数据转换主要分为隐式转换、显式转换(强制转换)、使…

c++ 多线程知识汇总

一、std::thread std::thread 是 C11 引入的标准库中的线程类&#xff0c;用于创建和管理线程 1. 带参数的构造函数 template <class F, class... Args> std::thread::thread(F&& f, Args&&... args);F&& f&#xff1a;线程要执行的函数&…

SpringCloud框架下的注册中心比较:Eureka与Consul的实战解析

摘要 在探讨SpringCloud框架中的两种注册中心之前&#xff0c;有必要回顾单体架构与分布式架构的特点。单体架构将所有业务功能集成在一个项目中&#xff0c;优点是架构简单、部署成本低&#xff0c;但耦合度高。分布式架构则根据业务功能对系统进行拆分&#xff0c;每个模块作…