当前位置: 首页 > news >正文

洛谷 子集积 题解

题目

P1 背包

子集积 > m >m >m 个数并不好求,考虑子集积 ≤ m \le m m 的个数 x x x,答案即为 ( 2 n − x ) (2^n - x) (2nx)

对于子集积 ≤ m \le m m 的个数,可以化为 0-1 背包问题做, f i , j f_{i,j} fi,j 表示前 i i i 个数,子集积为 j j j 的个数,有:

f i , j = ∑ j = 1 m f i − 1 , j a i f_{i,j}=\sum \limits_{j=1}^{m} f_{i-1,\frac {j} {a_i}} fi,j=j=1mfi1,aij j j j a i a_i ai 的倍数)。

背包问题常规地去掉一维: f j f_j fj 表示子集积为 j j j 的个数:

f j = ∑ j = 1 m f j a i f_j=\sum \limits_{j=1}^{m} f_{\frac {j} {a_i}} fj=j=1mfaij j j j a i a_i ai 的倍数)。

	cin >> n >> m;for(int i=1; i<=n; i++) cin >> a[i];f[1] = 1;for(int i=1; i<=n; i++)for(int j=(m / a[i]) * a[i]; j>=a[i]; j-=a[i])f[j] += f[j / a[i]], f[j] %= mod;int sum = qpow(2, n);for(int i=1; i<=m; i++)sum -= f[i],  sum = ((sum % mod) + mod) % mod;cout << sum;

时间复杂度 O ( n × ∑ i = 1 n m a i ) O(n \times \sum\limits_{i=1}^{n} {\frac {m} {a_i}}) O(n×i=1naim) ,最坏情况下 O ( n m ) O(nm) O(nm)

P2 优化

优化 1

若序列中有 100 100 100 1 1 1 ,然而任意多个 1 1 1 不会对子集积产生影响,我们只需要在方案数中乘以 2 100 2^{100} 2100 即可。

	...int sum = qpow(2, n);for(int i=1; i<=m; i++)sum -= (f[i] * qpow(2, cnt[1])) % mod,  sum = ((sum % mod) + mod) % mod;cout << sum;

优化 2

时间复杂度高的原因在于重复的计算:若有 100 100 100 2 2 2 ,我们会将第 2 , 3 2,3 2,3 2 2 2 、第 3 , 4 3,4 3,4 2 2 2 算了两次。我们应该只关心是几个 2 2 2 ,而不关心是哪几个 2 2 2

对于任意一个数 x x x ,设其出现了 t t t 次,我们可以对 x 1 , x 2 , . . . , x t x^1,x^2,...,x^t x1,x2,...,xt 分别计算,使用 x i x^i xi 计算贡献时乘以 C t i C_{t}^i Cti, 即 :

f j = ∑ i = 1 t ( f j x i × C t i ) f_j=\sum\limits_{i=1}^{t} ( f_{\frac {j} {x^i}} \times C_t^i) fj=i=1t(fxij×Cti) j j j x k x^k xk 的倍数)。

时间复杂度 O ( n ∑ i = 1 n ( log ⁡ a i m ) ) O(n \sum\limits_{i=1}^{n} (\log_{a_i}{m})) O(ni=1n(logaim)),最坏情况下 O ( n log ⁡ m ) O(n \log m) O(nlogm)

注意: 这里与多重背包的二进制拆分拆成多个物品不同,而是优化了对于一个物品的计算方式。

代码

相关文章:

洛谷 子集积 题解

题目 P1 背包 子集积 > m >m >m 个数并不好求&#xff0c;考虑子集积 ≤ m \le m ≤m 的个数 x x x&#xff0c;答案即为 ( 2 n − x ) (2^n - x) (2n−x)。 对于子集积 ≤ m \le m ≤m 的个数&#xff0c;可以化为 0-1 背包问题做&#xff0c; f i , j f_{i,…...

Boost笔记 1:下载、编译、安装、测试

1. 下载 当前版本是1.82&#xff0c;下载链接&#xff1a; https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/ 2. 安装编译依赖库 本地环境是Ubuntu 22.04&#xff0c;需要安装以下依赖库&#xff0c;部分影响boost相关功能的开启&#xff0c;部分影响编译…...

tiechui_lesson01_入口函数和卸载函数

主要讲解入口函数和卸载函数。 #include <ntifs.h>VOID nothing(HANDLE ppid, HANDLE mypid, BOOLEAN bcreate) {UNREFERENCED_PARAMETER(ppid);UNREFERENCED_PARAMETER(mypid);UNREFERENCED_PARAMETER(bcreate);DbgPrint("processNotify\n"); }VOID DriverU…...

密码学【java】初探究加密方式之非对称加密

文章目录 非对称加密1 常见算法2 生成公钥和私钥3 私钥加密4 私钥加密 公钥解密5 公钥和私钥的保存和读取5.1 **保存公钥和私钥**5.2 读取公钥和私钥 非对称加密 非对称加密算法又称现代加密算法。非对称加密是计算机通信安全的基石&#xff0c;保证了加密数据不会被破解。与对…...

网络安全和黑客技能:15本必读书籍推荐

前言 网络安全和黑客技能紧密相连。想要有效地防范黑客攻击&#xff0c;了解黑客的技能和思维方式非常重要。而要想成为一名合格的白帽黑客&#xff0c;也需要深入理解网络安全的基本原理和最佳实践。本文将介绍15本网络安全和黑客书籍&#xff0c;既包括了防范黑客攻击的指南…...

电话号码的字母组合

题目&#xff1a;17. 电话号码的字母组合 - 力扣&#xff08;Leetcode&#xff09; 思路&#xff1a; 给定一个电话号码字符串 digits&#xff0c;须输出它所能表示的所有字母组合。我们可以先定义一个数字字符到字母表的映射表 numToStr&#xff0c;然后再用 Combine 函数递归…...

PAT A1032 Sharing

1032 Sharing 分数 25 作者 CHEN, Yue 单位 浙江大学 To store English words, one method is to use linked lists and store a word letter by letter. To save some space, we may let the words share the same sublist if they share the same suffix. For example, l…...

Git常见问题汇总

问题&#xff1a;Your branch is ahead of ‘origin/master’ by 1 commit 原因&#xff1a;你的本地分支高于远程仓库一次提交, 同步更新下&#xff0c;执行命令&#xff1a; git push origin master问题&#xff1a;warning: LF will be replaced by CRLF in main.lua The …...

设计模式之代理模式(静态代理动态代理)

目录 1、什么是代理模式 2、代理模式的结构 3、代理模式的实现 3.1 静态代理和动态代理概念 3.2 静态代理 3.3 动态搭理 3.3.1 代码实现 3.3.2 Proxy类讲解 4、动态代理VS静态代理 5、代理模式优缺点 1、什么是代理模式 由于某些原因需要给某对象提供一个代理以控制对…...

Java并发编程基础知识概述

前言 在现代计算机系统和服务器中&#xff0c;多线程并行执行已经成为常态&#xff0c;而且并发编程能够充分利用系统资源&#xff0c;提高程序处理效率和质量。因此&#xff0c;Java并发编程是Java程序员必须掌握的重要技能之一。 线程和进程 在操作系统中&#xff0c;进程是…...

Redis超详细入门手册教程!还不快来看看?

地址&#xff1a; RedisRedis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures …https://redis.io/ 1&#xff1a;NoSQL简介 1.1&#xff1a;数据库应用的演变历程 单…...

代码随想录算法训练营第四十九天| 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II

文章目录 121. 买卖股票的最佳时机122.买卖股票的最佳时机II 121. 买卖股票的最佳时机 为什么定义dp数组为二维数组&#xff1f; dp数组定义&#xff0c;dp(i)[0] 表示第i天持有股票所得最多现金&#xff0c;dp(i)[1]表示第i天不持有股票的状态&#xff08;未必当前卖出&#x…...

零基础如何学习挖漏洞?看这篇就够了【网络安全】

前言 有不少阅读过我文章的伙伴都知道&#xff0c;我从事网络安全行业已经好几年&#xff0c;积累了丰富的经验和技能。在这段时间里&#xff0c;我参与了多个实际项目的规划和实施&#xff0c;成功防范了各种网络攻击和漏洞利用&#xff0c;提高了安全防护水平。 也有很多小…...

Twitter 推荐算法底有多牛? 已斩获11.7K star

点击上方“Github中文社区”&#xff0c;关注 看Github&#xff0c;每天提升第070期分享 &#xff0c;作者&#xff1a;Huber | Github中文社区 大家好&#xff0c;我是Huber。 在美国当地时间 3 月 31 日&#xff0c;马斯克履行当初的诺言&#xff0c;他宣布了 Twitter 算法的…...

看过这篇文章,读懂数据分析

一、为什么需要数据分析 数据分析的重要性不言而喻&#xff0c;没有数据&#xff0c;就是感性。数据不会被观点打败&#xff0c;数据只能被数据打败。我们现在妥妥地已经进入了数据时代。 量化IT投资成效&#xff0c;以数据驱动决策 站在公司或者决策者角度&#xff0c;数据最…...

[计算机图形学]光场,颜色与感知(前瞻预习/复习回顾)

一、Light Field / Lumigraph—光场 1.我们看到的是什么 我们的眼睛能够把3D世界转换为2D的成像信号被我们感知&#xff0c;如上面第一幅图&#xff0c;这就是我们看到整个世界的过程&#xff0c;那么如果我们把之前记录的光的信息都完美的放在一个幕布上&#xff0c;那么我们…...

L4公司进军辅助驾驶,放话无图也能跑遍中国

作者 | Amy 编辑 | 德新 高阶智能驾驶走向规模量产&#xff0c;高精地图成为关键的门槛之一。今年&#xff0c;多家车企和智驾公司都喊出「不依赖高精地图&#xff0c;快速大规模落地」的口号。 华为、小鹏、元戎以及毫末等&#xff0c;可能是最快在国内量产 无高精图智…...

【Java笔试强训 17】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;杨辉三角…...

【IPv6】基本概念及字段

IPV4知识点&#xff1a; 字段值 IPv4字段共 字段值解释Version版本版本字段&#xff0c;可以区分V4和V6版本&#xff0c;V4是0100&#xff0c;V6是0110&#xff0c;需要注意的是V4和V6头部除了版本字段位置相同外&#xff0c;其他都是不一样的&#xff0c;因此两个协议不能直…...

数据库中的 Schema 变更实现

线上沙龙-技术流第 30 期营业啦 05月09日&#xff08;周二&#xff09;19:30 KaiwuDB - B站直播间 传统数据库操作 Schema 变更时&#xff0c;第一步便是锁表&#xff0c;需持续到 Schema 变更操作完成。这样的做法虽然实现简单&#xff0c;无需考虑事务并发带来的影响&#…...

基于springboot啦啦鑫宠物管理系统设计与开发(源码+精品论文+答辩PPT等资料)

博主介绍&#xff1a;CSDN毕设辅导第一人、靠谱第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交…...

ComfyUI视频模型部署指南:从本地存储到云端优化的技术选型

最近在部署ComfyUI视频生成项目时&#xff0c;遇到了一个很实际的问题&#xff1a;那些动辄几十GB的视频模型文件&#xff0c;到底该放在哪里&#xff1f;直接扔在本地硬盘&#xff0c;团队协作和版本管理就成了噩梦&#xff1b;想用NAS或云存储&#xff0c;又担心加载速度拖慢…...

Llama Factory保姆级入门:可视化界面微调ChatGLM/Qwen,告别复杂代码

Llama Factory保姆级入门&#xff1a;可视化界面微调ChatGLM/Qwen&#xff0c;告别复杂代码 1. 为什么选择Llama Factory&#xff1f; 1.1 传统微调方式的痛点 想象一下&#xff0c;你想让ChatGLM或Qwen模型学会某个特定领域的知识&#xff08;比如医疗咨询或法律问答&#…...

MCP 2.0协议安全配置全链路实战:从TLS握手加固到RBAC策略落地的5大关键动作

第一章&#xff1a;MCP 2.0协议安全配置全景认知与实施准备MCP 2.0&#xff08;Managed Configuration Protocol v2.0&#xff09;是面向云原生环境设计的轻量级设备与服务配置分发协议&#xff0c;其安全模型基于双向TLS认证、细粒度策略控制与配置签名验证三位一体机制。在实…...

mcp-feedback-enhanced 部署完全手册:从本地到云端的实战指南

mcp-feedback-enhanced 部署完全手册&#xff1a;从本地到云端的实战指南 【免费下载链接】mcp-feedback-enhanced Interactive User Feedback MCP 项目地址: https://gitcode.com/gh_mirrors/mc/mcp-feedback-enhanced MCP Feedback Enhanced 是一个强大的交互式用户反…...

2026年主流语音机器人盘点:从入门到高端,哪款最适合你的企业?

2026年&#xff0c;随着生成式AI与大模型技术的深度落地&#xff0c;企业服务领域正经历一场深刻的效率革命。智能语音机器人已不再是简单的“自动应答机”&#xff0c;而是进化为能够理解复杂语义、感知客户情绪、甚至主动提供个性化方案的“数字员工”。面对市场上从轻量级Sa…...

Betweenness Centrality在社交网络分析中的实战应用

1. 什么是Betweenness Centrality&#xff1f; 在社交网络分析中&#xff0c;Betweenness Centrality&#xff08;中介中心性&#xff09;是一个非常重要的指标&#xff0c;它用来衡量一个节点在网络中作为"桥梁"的重要性。简单来说&#xff0c;就是看这个节点在连接…...

Leather Dress Collection效果展示:12款皮革服饰在不同光照条件下的渲染效果

Leather Dress Collection效果展示&#xff1a;12款皮革服饰在不同光照条件下的渲染效果 1. 项目概述 Leather Dress Collection是一组基于Stable Diffusion 1.5的LoRA模型&#xff0c;专门用于生成各种皮革服装风格的图像。这套模型由Stable Yogi开发&#xff0c;包含12个不…...

SGLang-v0.5.6选型指南:5种预装环境横向对比,数据说话

SGLang-v0.5.6选型指南&#xff1a;5种预装环境横向对比&#xff0c;数据说话 1. 为什么需要SGLang预装环境对比 1.1 大模型部署的常见痛点 在大模型实际部署过程中&#xff0c;工程师们经常面临以下挑战&#xff1a; 环境配置复杂&#xff1a;CUDA版本、PyTorch版本、Pyth…...

惯性导航技术:从基础原理到坐标系转换实战

1. 惯性导航技术的基本原理 想象一下你被蒙上眼睛坐在一辆行驶的汽车里&#xff0c;如何判断自己现在的位置&#xff1f;惯性导航系统就像这个场景中的"内部感知系统"。它不需要看窗外&#xff08;不依赖外部信号&#xff09;&#xff0c;仅靠感受车辆的加减速和转弯…...