【LeetCode】3670. 没有公共位的整数最大乘积 (SOSDP)

3670. 没有公共位的整数最大乘积 - 力扣(LeetCode)

题目:

思路:

SOSDP

本题我们显然不能枚举每一个数对,n² 的复杂度显然超时,所以考虑优化

我们考虑一个二进制数 mask,因为我们必须要选没有任何公共位置的数才行,那么我们参考集合论,其实就是去找 ~mask 的子集中的最大值

那么显然问题变为如何找子集的最大值,我们可以考虑动态规划的思想,假设如果我们要找 mask 的子集最大值,那么是不是可以找 mask 所有子集的子集的最大值,以此类推,我们可以一步一步求出所有子集的最大值

具体的,我们定义 f[i] 为 i 的子集中的最大值,初始化 f[x] = x(如果含有 x),然后套板子即可

其实这就是板子的变形,从求前缀和变成了前缀最大值,具体实现看代码

前缀和情况如下

//从地位向高位枚举
for (int i = 0; i < k; i++) {//枚举状态for (int mask = 0; mask < (1 << k); mask++) {//判断这一位有没有,即是不是子集if (mask >> i & 1) f[mask] += f[mask ^ (1 << i)];}
}

代码:

class Solution {
public:long long maxProduct(vector<int>& nums) {int mx = 0;for (auto& x : nums)mx = max(mx, x);int m = __lg(mx) + 1;mx = 1 << m;vector<int> f(mx,0);for (auto & x : nums)f[x] = x;for (int i = 0; i < m; i++) {for (int j = 0; j < mx; j++) {if (j >> i & 1) {f[j] = max(f[j], f[j ^ (1 << i)]);}}}long long ans = 0;for (auto& x : nums) {int buji = (mx - 1) ^ x;ans = max(ans, 1LL * x * f[buji]);}return ans;}
};

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

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

相关文章

Sping Web MVC入门

1.什么是Sping Web MVC1.1MVC定义2.什么是Spring MVC

LLM面试50问:NLP/RAG/部署/对齐/安全/多模态全覆盖

太好了!下面按你点名的 6 大主题(NLP、检索/RAG、部署、对齐、 安全、多模态)给出深度版答案 + 关键公式/推导 + 最小可跑示例代码 + 常见坑。都尽量精炼到“拿来即用/面试可白板推导”的粒度。 NLP(架构、位置编码、指令跟随) 1) RoPE 长上下文与缩放 要点:RoPE 将位置…

计算机网络技术(四)完结

七&#xff0c;虚拟局域网VLAN1&#xff0c;VLAN概述通过设置虚拟局域网来实现&#xff0c;pc之间实现快速安全通信。对比说明&#xff1a;之前交换机的广播来实现通信&#xff0c;但同意也带来了几个问题&#xff0c;过大的广播域&#xff0c;造成了带宽的浪费&#xff0c;过大…

VibeVoice 部署全指南:Windows 下的挑战与完整解决方案

VibeVoice 部署全指南&#xff1a;Windows 下的挑战与完整解决方案 目标读者&#xff1a;希望在本地部署 VibeVoice 进行文字转语音&#xff08;TTS&#xff09;的开发者、研究人员或爱好者 关键词&#xff1a;VibeVoice、FlashAttention-2、Windows 部署、CUDA 加速、FFmpeg、…

一次别开生面的Java面试

场景描述&#xff1a; 在一家知名互联网大厂的面试室中&#xff0c;谢飞机&#xff0c;一个自信满满的程序员&#xff0c;正在经历一场别开生面的Java面试。面试官以严肃的态度开始了这场技术问答。第一轮&#xff1a;基础知识问答 面试官&#xff1a;"我们先从简单的开始…

web自动化测试(selenium)

目录 测试前的准备 驱动 安装驱动管理 selenium库 使用selenium编写代码 自动化测试常用函数 元素的定位 cssSelector xpath 查找元素 点击/提交对象 模拟按键输入 清除文本内容 获取文本信息 获取当前页面标题和URL 窗口 切换窗口 窗口设置大小 屏幕截图 …

民间药方偏方网站整站源码 带数据PHP版

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 民间药方偏方网站整站源码 带数据PHP版 这是一个聚焦中国民间药方的平台。平台设有搜索功能&#xff0c;方便用户查找药方&#xff0c;还对药方进行了内科、外科、肿瘤等多类分类&#x…

C++ 条件变量,互斥锁

C 中多线程编程的两个核心同步原语&#xff1a;互斥锁 (Mutex) 和 条件变量 (Condition Variable)。它们是实现线程间安全通信和协调的关键。1. 互斥锁 (Mutex)核心概念互斥锁用于保护共享数据&#xff0c;确保同一时间只有一个线程可以访问该数据&#xff0c;从而避免数据竞争…

MySQL 8.0 窗口函数详解:让数据分析更简单高效

在日常的数据分析工作中&#xff0c;我们经常需要对数据进行分组排序、计算移动平均值、统计累计求和等操作。在MySQL 8.0之前&#xff0c;这类需求通常需要编写复杂的子查询或连接查询才能实现。而MySQL 8.0引入的窗口函数&#xff08;Window Functions&#xff09;极大地简化…

【论文阅读】DeepSeek-LV2:用于高级多模态理解的专家混合视觉语言模型

【论文阅读】DeepSeek-LV2&#xff1a;用于高级多模态理解的专家混合视觉语言模型 文章目录【论文阅读】DeepSeek-LV2&#xff1a;用于高级多模态理解的专家混合视觉语言模型一、介绍二、模型结构三、数据建设**3.1 对齐****3.2 视觉语言预训练数据****3.3 监督微调数据**四、训…

一款为开发者而生的开源全栈LLMOps平台

&#x1f680; 超越ChatGPT&#xff01;一款为开发者而生的全栈LLMOps平台&#xff1a;LMForge完全指南 作为一名AI应用开发者&#xff0c;你是否也曾遇到过这些令人头疼的问题&#xff1f; 成本失控&#xff1a;GPT-4的API账单像雪片一样飞来&#xff0c;却不知道钱具体花在…

DeepL Translate在线工具测评:精准翻译技术文档与学术论文,支持多格式文档上传保留原格式

之前跟你们聊过帮着梳理代码协作的 GitLens&#xff0c;今天换个偏向文档翻译的方向 —— 给你们安利一个在线 AI 翻译工具「DeepL Translate」&#xff0c;官网地址是DeepL Translate: The worlds most accurate translator&#xff0c;它跟普通翻译工具不一样&#xff0c;翻技…

系统配置不是“乐高积木”:制造企业如何通过科学变更管理保障稳定运行

在制造业的数字化进程中&#xff0c;系统配置的稳定性常被忽视。作为一家制造企业的行政经理&#xff0c;我曾亲历这样的场景&#xff1a;为应对生产波动&#xff0c;各部门频繁要求调整ERP系统参数&#xff0c;结果导致库存数据失真、订单处理延迟&#xff0c;甚至引发客户投诉…

vscode炒股插件-韭菜盒子AI版

基于vscode插件&#xff0c;原韭菜盒子3.15.0版本开发&#xff0c;新增选股宝快讯功能、AI投资助手、指定股票AI分析功能&#xff08;目前只针对A股&#xff09;&#xff0c;内置AI大模型助手功能&#xff0c;支持ai分析最新资讯、ai分析当日资讯&#xff08;让ai随时给你分析股…

Spring Cloud Config 核心原理

Spring Cloud Config 是 Spring Cloud 提供的一个用于集中化管理应用程序各个环境下的配置属性的解决方案。它支持统一管理配置&#xff0c;并且可以在不重启应用的情况下动态地更新配置信息&#xff0c;提高开发和运维效率。 主要特点 • 集中管理配置&#xff1a;可以将不同环…

springboot ioc 控制反转入门与实战

Spring Boot3 IOC 项目地址https://gitee.com/supervol/loong-springboot-study&#xff08;记得给个start&#xff0c;感谢&#xff09;IOC 概述在 Spring Boot 3 中&#xff0c;IOC&#xff08;Inversion of Control&#xff0c;控制反转&#xff09;是核心思想之一&#xff…

LangGraph 重要注意事项和常见问题

01. 数据状态与归纳函数在前面的课时中&#xff0c;我们说过在 LangGraph 中 节点 在默认情况下返回的字典数据会将原始数据覆盖&#xff0c;例如下面的代码最终返回结果是 {"messages": [4]} 而不是 [1,2,3,4]&#xff0c;如下class MyState(TypedDict):messages: l…

避坑指南!解决Navicat运行SQL成功但没有表的问题

在运行转储的SQL文件时&#xff0c;成功运行&#xff0c;试了很多办法都不显示出表。原因&#xff1a;当从一个高版本的 MySQL 数据库导入数据到低版本的 MySQL 数据库时&#xff0c;可能会遇到兼容性问题。因为高版本的 MySQL 可能支持 utf8mb4_0900_ai_ci&#xff0c;而低版本…

在 Elasticsearch 中使用用户行为分析:使用 UBI 和 search-ui 创建一个应用程序

作者&#xff1a;来自 Elastic Eduard Martin 及 Alexander Dvila 通过一个实际示例学习如何在 Elasticsearch 中使用 UBI。我们将创建一个在搜索和点击结果时生成 UBI 事件的应用程序。 想要获得 Elastic 认证吗&#xff1f;看看下一次 Elasticsearch Engineer 培训什么时候开…

SpringBoot3中使用Caffeine缓存组件

SpringBoot3已经把EhCache从框架中删除了&#xff0c;SpringBoot3默认的缓存组件为Caffeine&#xff0c;那么我们在SpringBoot3中如何去使用它了&#xff1f; 1.添加依赖 <dependency><groupId>com.github.ben-manes.caffeine</groupId><artifactId>ca…