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/22 0:19:23阅读更多 →
审核模型混部:敏感词匹配加深度学习模型的串联策略

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

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

2026/7/22 0:19:23阅读更多 →
计算机毕业设计之基于springboot的乡镇普法宣传系统

计算机毕业设计之基于springboot的乡镇普法宣传系统

随着人们生活水平的提高和思想观念的转变,以及经济全球化的推动,互联网技术在社会综合发展中的应用日益广泛,突破了传统管理方式的局限性。乡镇普法宣传作为提升公民法律素养的重要途径,亟需更高效、便捷的管理手段。基于Spring B…

2026/7/22 0:17:23阅读更多 →
Codex App、CLI、IDE、Web 有什么区别?一次讲清楚

Codex App、CLI、IDE、Web 有什么区别?一次讲清楚

很多人第一次接触 Codex,都会遇到一个问题: Codex 到底应该在哪里用? 打开 OpenAI 的官方介绍,你会发现 Codex 至少有 4 个常见入口: Codex AppCodex CLICodex IDE 扩展Codex Web 看起来像是 4 个不同的产品。 有人在终…

2026/7/22 3:18:16阅读更多 →
ComfyUI-Easy-Use组件加载失败终极解决方案:3步快速修复节点缺失问题

ComfyUI-Easy-Use组件加载失败终极解决方案:3步快速修复节点缺失问题

ComfyUI-Easy-Use组件加载失败终极解决方案:3步快速修复节点缺失问题 【免费下载链接】ComfyUI-Easy-Use In order to make it easier to use the ComfyUI, I have made some optimizations and integrations to some commonly used nodes. 项目地址: https://git…

2026/7/22 3:18:16阅读更多 →
【2026.7亲测可用】千问8元无门槛优惠券激活码:千问新用户专属878554

【2026.7亲测可用】千问8元无门槛优惠券激活码:千问新用户专属878554

千问新用户8元券保姆级教程,附口令:千问新用户专属878554你真的一定要看,轻松两步领取到8元无门槛1.这个框框的 直接打开 没有的去下一个2.对话框输入专属口令手动输入:千问新用户专属878554在APP内输入指定口令:千问新…

2026/7/22 3:18:16阅读更多 →
ECMAScript 2023模块系统解析与实战应用

ECMAScript 2023模块系统解析与实战应用

1. ECMAScript 2023语言规范概述ECMAScript 2023语言规范是JavaScript语言的第14个正式版本,由TC39委员会制定并发布。作为前端开发者日常工作的基石,这份规范定义了JavaScript的核心语法、类型系统、执行模型等基础架构。2023版在保持向后兼容的同时&am…

2026/7/22 3:18:16阅读更多 →
Gramado OS 终极指南:从零构建你的64位图形操作系统

Gramado OS 终极指南:从零构建你的64位图形操作系统

Gramado OS 终极指南:从零构建你的64位图形操作系统 【免费下载链接】kernel Gramado OS 项目地址: https://gitcode.com/gh_mirrors/kernel14/kernel Gramado OS 是一个开源的64位图形操作系统内核项目,专为操作系统学习者和爱好者设计。这个完整…

2026/7/22 3:18:16阅读更多 →
软件保护技术实战:从混淆到虚拟机保护的防御体系

软件保护技术实战:从混淆到虚拟机保护的防御体系

1. 软件保护技术的核心概念与价值在当今数字化时代,软件已成为企业和个人最重要的资产之一。我见过太多开发者投入数月心血开发的产品,在一夜之间被破解、篡改甚至盗版分发。软件保护技术就是为应对这些威胁而生的防御体系,它像给软件穿上了一…

2026/7/22 3:16:16阅读更多 →
Go语言静态资源打包方案对比与实践指南

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

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

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

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

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

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

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

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

2026/7/22 0:53:59阅读更多 →
中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业做小程序,最常见的矛盾是预算有限,但又不希望功能太单薄;没有技术团队,但又希望后续能自己运营;想快速上线,又担心隐性收费和售后失联。选型时如果只看“低价套餐”或“案例数量”,很容…

2026/7/22 0:01:17阅读更多 →
GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

企业做营销,最怕钱花完了,资产没有留下。 效果广告能带来一段时间的曝光,但预算停止后,流量往往也随之停止。短视频内容可能在几天内冲高,也可能很快沉下去。AI搜索时代,企业需要重新思考一个问题&#xff…

2026/7/22 0:01:17阅读更多 →
Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复 一、你的 Agent 在"再想想"的循环里绕了 12 轮,用户已经关窗口了 Agent 与人最大的区别是:人知道什么时候该停下来给答案,Agent 会一直"想"下去。你给 Agent 接…

2026/7/22 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/21 22:53:50阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/21 18:53:30阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/21 18:53:30阅读更多 →