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

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

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

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

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

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

2026/7/22 0:18:34 阅读更多 →

最新新闻

别急着卷智能:运维转大模型,权限与日志才是你的生死线

别急着卷智能:运维转大模型,权限与日志才是你的生死线

如果你正准备往大模型方向转,《别急着换赛道:运维经验在 AI 项目里到底值多少?》这类问题别只看热度。更重要的是判断自己该补哪块能力,以及怎么证明你真的会。摘要先把这篇文章的目标说清楚:看完之后,你应…

2026/7/22 2:25:42 阅读更多 →
LlamaFactory微调模型转换GGUF格式问题排查指南

LlamaFactory微调模型转换GGUF格式问题排查指南

1. 问题现象与背景分析最近在本地大模型微调实践中遇到一个典型问题:使用LlamaFactory框架微调后的模型,通过llama.cpp转换为GGUF格式后导入Ollama,结果模型输出完全不符合预期,出现"胡说八道"的情况。这个问题其实反映…

2026/7/22 2:25:42 阅读更多 →
预告片技术解析:从画面构图到声音设计的完整分析框架

预告片技术解析:从画面构图到声音设计的完整分析框架

这次我们来看一个电影展入围作品的预告片分析项目。第二十届FIRST青年电影展主竞赛入围剧情短片《失火》预告片,这是一个典型的影视作品技术分析案例,重点在于如何从技术角度解析预告片的制作水准、叙事手法和艺术表现。对于技术创作者来说,分…

2026/7/22 2:25:42 阅读更多 →
ARM Linux 嵌入式中断全流程解析:从 GPIO 到 GIC 架构实战

ARM Linux 嵌入式中断全流程解析:从 GPIO 到 GIC 架构实战

本文基于 Cortex-A 系列处理器(imx6ull/Cortex-A7/A53)整理,覆盖中断处理全流程、GIC 架构演进、CP15 协处理器操作、底层汇编指令,适合嵌入式 Linux / 裸机开发入门与复习。一、中断处理的 6 个标准步骤ARM 体系中,一…

2026/7/22 2:25:42 阅读更多 →
从“盖章“到“上链“:十部委电子单证新规,正在改写企业合同管理的游戏规则

从“盖章“到“上链“:十部委电子单证新规,正在改写企业合同管理的游戏规则

摘要:2026年十部委联合发布的《促进和规范电子单证应用规定》将电子合同带入“签得可信”的新阶段,明确要求电子单证具备可追溯、不可篡改和签发人识别三大核心能力。规定列出的九个评价因素为企业选型提供了清晰标准,并首次为跨境贸易数据出…

2026/7/22 2:25:42 阅读更多 →
终极指南:5分钟掌握GIMP-ML免费AI图像增强神器

终极指南:5分钟掌握GIMP-ML免费AI图像增强神器

终极指南:5分钟掌握GIMP-ML免费AI图像增强神器 【免费下载链接】GIMP-ML AI for GNU Image Manipulation Program 项目地址: https://gitcode.com/gh_mirrors/gi/GIMP-ML 还在为老照片修复发愁?想要一键提升图片质量却不懂复杂技术?GI…

2026/7/22 2:24:42 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…

2026/7/22 0:00:26 阅读更多 →

周新闻

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

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

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

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

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

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

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

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

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

2026/7/21 8:25:39 阅读更多 →

月新闻