DeepSeek    LeetCode 3671. 子序列美丽值求和 Java实现
这道题需要计算所有“严格递增”且“GCD恰好为g”的子序列对答案的贡献。直接枚举所有子序列会超时所以核心思路是容斥原理 树状数组优化DP。算法思路1. “至少”变“恰好”先计算 cnt[g]表示子序列元素都是g的倍数即GCD“至少”为g的严格递增子序列数量。然后从大到小用容斥exact[g] cnt[g] - exact[2g] - exact[3g] - ...得到GCD恰好为g的数量。2. 计算 cnt[g]对每个可能的 g只看数组中 g 的倍数。用树状数组Fenwick Tree维护以某个值结尾的严格递增子序列个数。遍历这些倍数 x查询所有小于 x 的结尾的累计和 sum则 dp[x] sum 1自成一个子序列并累加到 cnt[g]。3. 汇总答案最终 answer sum(g * exact[g])。Java实现这里提供一个基于上述逻辑、使用树状数组优化的Java版本。javaclass Solution {private static final int MOD 1_000_000_007;public int totalBeauty(int[] nums) {int maxNum 0;for (int v : nums) maxNum Math.max(maxNum, v);// 1. 按因子分组groups[d] 存储 nums 中所有 d 的倍数ListInteger[] groups new List[maxNum 1];for (int i 1; i maxNum; i) groups[i] new ArrayList();for (int x : nums) {// 枚举 x 的所有因子 d并把 x 放入 groups[d]for (int d 1; d * d x; d) {if (x % d 0) {groups[d].add(x);if (d * d x) groups[x / d].add(x);}}}// cnt[g] 存储 GCD 至少为 g 的严格递增子序列数量long[] cnt new long[maxNum 1];// 2. 对每个可能的 g用树状数组计算 cnt[g]for (int g maxNum; g 1; g--) {ListInteger list groups[g];if (list.isEmpty()) continue;// 坐标压缩值 range maxNum / g将 x 映射到 x / g范围 1 ~ maxNum/gFenwick bit new Fenwick(maxNum / g 1);for (int x : list) {int idx x / g; // 索引从 1 开始// 查询以严格小于 x 的元素结尾的子序列总数long prev bit.query(idx - 1);// dp: 当前 x 作为末尾的新增子序列数前面的子序列追加 x或自成一派long dp (prev 1) % MOD;// 累加到 cnt[g]cnt[g] (cnt[g] dp) % MOD;// 更新树状数组bit.update(idx, dp);}}// 3. 容斥从大到小减去倍数的情况得到 GCD 恰好为 g 的数量long[] exact new long[maxNum 1];long ans 0;for (int g maxNum; g 1; g--) {long val cnt[g];for (int multiple g * 2; multiple maxNum; multiple g) {val (val - exact[multiple] MOD) % MOD;}exact[g] val;ans (ans (long) g * val) % MOD;}return (int) ans;}// 树状数组类支持单点更新、前缀查询class Fenwick {int n;long[] tree;Fenwick(int n) {this.n n;this.tree new long[n 1];}void update(int idx, long delta) {while (idx tree.length) {tree[idx] (tree[idx] delta) % MOD;idx idx -idx;}}long query(int idx) {long res 0;while (idx 0) {res (res tree[idx]) % MOD;idx - idx -idx;}return res;}}}复杂度分析· 时间复杂度O(N * sqrt(M) M * log M)其中 N 是数组长度M 是数组最大值。枚举因子和容斥是调和级数相关操作整体可在限定条件下运行。· 空间复杂度O(M N * sqrt(M))主要用于存储分组和树状数组。

相关新闻

审核结果持久化:MySQL 和 Elasticsearch 各存什么

审核结果持久化:MySQL 和 Elasticsearch 各存什么

审核结果持久化:MySQL 和 Elasticsearch 各存什么 一、审核结果的两类查询模式 审核结果的数据使用方至少有两个。运营平台需要按内容 ID、审核状态、审核时间做精确的条件查询和分页,这是典型的 OLTP 场景。安全分析团队需要按违规标签、置信度分布、审…

2026/7/24 6:57:30 阅读更多 →
审核模型混部:敏感词匹配加深度学习模型的串联策略

审核模型混部:敏感词匹配加深度学习模型的串联策略

审核模型混部:敏感词匹配加深度学习模型的串联策略 一、为什么单模型审核挡不住规模化违规内容 先看一个真实场景的数据分布。某 UGC 平台日均新增内容 200 万条,经过单层 NLP 模型审核后,线上拦截率约 91%。剩下的 9%(约 18 万条…

2026/7/24 4:12:53 阅读更多 →
数据可视化中的无障碍设计:图表替代文本与键盘导航方案

数据可视化中的无障碍设计:图表替代文本与键盘导航方案

数据可视化中的无障碍设计:图表替代文本与键盘导航方案 一、引言:当你的数据"讲"不出来,损失的不只是合规,更是用户 去年秋天,一个用户反馈邮件让我整整反思了一个星期。 一位使用我们 SaaS 后台的数据分析师…

2026/7/25 0:01:59 阅读更多 →

最新新闻

AI远程工作助理:低成本自动化解决方案与实践

AI远程工作助理:低成本自动化解决方案与实践

1. 项目背景:当AI助理遇上远程协作新形态最近在技术社区看到一个挺有意思的讨论:用AI工具搭建个人远程工作助理。这让我想起去年帮朋友测试过的一个方案——通过MiniMax M2.5这类多模态AI模型,配合自动化脚本搭建的"数字员工"系统。…

2026/7/25 8:38:34 阅读更多 →
Java+YOLO工业缺陷检测实战:从模型训练到产线部署

Java+YOLO工业缺陷检测实战:从模型训练到产线部署

1. 项目背景与核心价值 去年接手某汽车零部件厂的缺陷检测系统升级项目时,我意识到传统机器视觉方案在应对复杂缺陷类型时存在明显局限。经过多轮技术选型,最终采用JavaYOLO的架构实现了99.2%的检测准确率,比原系统提升23%。这套方案现已稳定…

2026/7/25 8:38:34 阅读更多 →
AI办公自动化实战:从WorkBuddy与Codex入门到构建智能数字员工

AI办公自动化实战:从WorkBuddy与Codex入门到构建智能数字员工

1. 课程背景与核心价值:为什么你需要关注AI办公自动化? 在当前的软件开发与日常办公场景中,我们常常面临大量重复、繁琐且规则明确的任务。例如,从不同格式的文档中提取数据、跨系统同步信息、自动生成日报周报、批量处理邮件等。传统的手动操作不仅效率低下、容易出错,还…

2026/7/25 8:38:34 阅读更多 →
Godot游戏开发数学核心:向量与变换矩阵实战指南

Godot游戏开发数学核心:向量与变换矩阵实战指南

1. 项目概述:为什么游戏开发者必须啃下数学这块硬骨头?如果你刚开始用Godot,可能会觉得引擎已经帮你把物理、碰撞、动画都封装好了,直接拖拽节点、写点脚本就能让角色动起来,为什么还要去深究向量、矩阵这些听起来就头…

2026/7/25 8:38:34 阅读更多 →
Runway Agent 2.0:AI营销工具的技术架构与应用实践解析

Runway Agent 2.0:AI营销工具的技术架构与应用实践解析

最近在AI营销工具领域,Runway推出的Agent 2.0引起了广泛关注。作为AI内容生成平台的重要升级,这款工具旨在帮助营销人员更高效地创建和优化广告内容。本文将深入解析Agent 2.0的核心功能、技术架构以及实际应用场景,为数字营销从业者和AI技术爱好者提供全面的技术分析。 1.…

2026/7/25 8:38:34 阅读更多 →
SIFT与RANSAC在图像伪造检测中的实践应用

SIFT与RANSAC在图像伪造检测中的实践应用

1. 项目背景与核心价值 在数字图像处理领域,高分辨率图像的伪造检测一直是个技术难点。传统方法往往难以应对复杂的篡改手段,而基于SIFT(尺度不变特征变换)和RANSAC(随机抽样一致)的算法组合,则…

2026/7/25 8:37:34 阅读更多 →

日新闻

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:00:35 阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:00:35 阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:00:35 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/25 5:08:22 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/25 5:13:53 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻