P1566 加等式 【洛谷算法习题】
P1566 加等式网页链接P1566 加等式题目描述对于一个整数集合我们定义“加等式”如下集合中的某一个元素可以表示成集合内其他元素之和。如集合1 , 2 , 3 {1,2,3}1,2,3中就有一个加等式3 1 2 312312。而且3 1 2 312312和3 2 1 321321是相同的加等式也是这个集合唯一的加等式。给定一个整数集合编程找出其加等式的个数。输入格式第一行为t tt表示测试数据组数。接下来t tt行每行表示一组测试数据。其中第一个数m mm表示集合元素的个数接下来m mm个不同的整数x i x_ixi​表示集合元素。输出格式对于每个输入数据输出一个整数表示其中加等式的个数。输入输出样例 #1输入 #13 3 1 2 3 3 1 2 5 6 1 2 3 5 4 6输出 #11 0 7说明/提示1 ≤ t ≤ 10 1\le t\le 101≤t≤101 ≤ m ≤ 30 1\le m \le 301≤m≤301 ≤ x ≤ 1000 1\le x\le 10001≤x≤1000。解题思路本题要求统计一个集合中“加等式”的数量即存在一个元素等于集合中其他元素之和。由于数据规模较小m ≤ 30 m\le 30m≤30元素值≤ 1000 \le 1000≤1000可以采用子集和 DP的思想先将元素排序然后依次枚举每个元素作为“和”利用背包 DP 统计用前面较小的元素组成该数的方案数并累加答案。1. 问题等价转化加等式定义集合中某个元素x xx可以表示为集合中若干个其他元素之和。注意“其他元素”不能包含x xx自身且组合不考虑顺序即{ a , b } \{a,b\}{a,b}与{ b , a } \{b,a\}{b,a}视为同一种。计数策略将元素从小到大排序依次考虑每个元素a i a_iai​。此时所有可能参与求和组成a i a_iai​的元素一定来自a 1 ∼ a i − 1 a_1 \sim a_{i-1}a1​∼ai−1​严格小于a i a_iai​。如果我们能计算出用前i − 1 i-1i−1个元素组成和为a i a_iai​的不同子集个数那么这些方案就对应以a i a_iai​为“和”的加等式。子集和 DP维护一个数组f [ v ] f[v]f[v]表示当前已考虑的元素中选出若干元素每个最多一次其和恰好为v vv的方案数。顺序扫描元素对于当前元素a i a_iai​f [ a i ] f[a_i]f[ai​]即为组成a i a_iai​的加等式个数由前面的元素构成。累加后再将a i a_iai​加入 DP 的候选集合中更新f ff供后续更大的元素使用。2. 算法实现排序 背包 DP输入与排序读取集合大小m mm和所有元素计算元素总和s u m sumsum用于 DP 上限。将元素按升序排序保证前面元素总是小于后面的。DP 初始化f [ 0 ] 1 f[0]1f[0]1其余为0 00表示空集和为0 00的方案数为1 11。遍历元素i 1 ∼ m i 1 \sim mi1∼m累加答案a n s f [ a i ] ans \mathrel{} f[a_i]ansf[ai​]。此时f ff仅由a 1 ∼ a i − 1 a_1 \sim a_{i-1}a1​∼ai−1​更新过因此f [ a i ] f[a_i]f[ai​]恰好是用严格小于a i a_iai​的元素组成a i a_iai​的方案数。更新 DP将当前元素a i a_iai​加入背包。为防止同一个元素被重复使用需倒序更新for j sum down to a_i: f[j] f[j - a_i]。输出答案每组数据处理完后输出a n s ansans。3. 复杂度分析时间复杂度每组数据需要进行m mm次 DP 更新每次更新规模为O ( s u m ) O(sum)O(sum)。m ≤ 30 m \le 30m≤30s u m ≤ 30 × 1000 30000 sum \le 30 \times 1000 30000sum≤30×100030000单组复杂度约9 × 10 5 9 \times 10^59×105。共t ≤ 10 t \le 10t≤10组总操作量不到10 7 10^7107轻松通过。空间复杂度O ( s u m ) O(sum)O(sum)用于 DP 数组s u m sumsum最大30000 3000030000空间极小。总结巧妙地将“加等式”计数转化为有序子集和问题排序后每个元素作为和时其组合只能来自更小的元素通过背包 DP 统计组合方案数。先统计答案再更新 DP 的方式确保了当前元素不会被自己用来组合自己。该方法简洁高效完美契合数据范围。代码简要说明输入处理读入t tt对每组数据读入m mm和数组a aa计算总和s u m sumsum并对a aa排序。DP 数组f[30010]存储组合方案数初始f[0]1。核心循环遍历排序后的a i a_iai​先将f[a[i]]加入答案然后倒序更新ff[j] f[j - a[i]]j jj从s u m sumsum降到a i a_iai​。输出输出ans每组数据后换行。代码内容#includebits/stdc.husingnamespacestd;#defineendl\ntypedeflonglongll;typedefunsignedlonglongull;typedefvectorvectorllvvt;typedefpairll,llpll;constll N1e310;constll INF1e18;constll M1e610;constll mod1e97;ll t,m;ll a[40];ll f[30010];ll sum;intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cint;while(t--){cinm;sum0;for(ll i1;im;i){cina[i];suma[i];}sort(a1,am1);memset(f,0,sizeof(f));f[0]1;ll ans0;for(ll i1;im;i){ansf[a[i]];for(ll jsum;ja[i];j--)f[j]f[j-a[i]];}coutansendl;}return0;}

相关新闻

5步终极指南:如何快速安装和配置ViGEmBus虚拟游戏控制器驱动程序

5步终极指南:如何快速安装和配置ViGEmBus虚拟游戏控制器驱动程序

5步终极指南:如何快速安装和配置ViGEmBus虚拟游戏控制器驱动程序 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus虚拟游戏控制器驱动程序…

2026/10/18 12:11:50 阅读更多 →
拯救者工具箱完全指南:让你的联想游戏本性能翻倍的终极方案

拯救者工具箱完全指南:让你的联想游戏本性能翻倍的终极方案

拯救者工具箱完全指南:让你的联想游戏本性能翻倍的终极方案 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit Leno…

2026/10/18 12:11:53 阅读更多 →
08 材质、透明度与显示模式

08 材质、透明度与显示模式

08 材质、透明度与显示模式 Blender 中常见疑问:“代码明明设置了透明度,为什么模型看起来还是不透明?” 很多时候不是材质本身错,而是当前 Viewport 显示模式不对。 一、常见显示模式 Wireframe Solid Material Preview Rende…

2026/10/16 3:35:42 阅读更多 →

最新新闻

贝叶斯网络在电力故障诊断中的实战:小样本与可解释推理

贝叶斯网络在电力故障诊断中的实战:小样本与可解释推理

简介:贝叶斯网络是一种以概率图模型表达变量间因果依赖的数学框架,其核心原理是通过有向无环图与条件概率表来描述不确定性关系。在工程实践中,它尤其擅长处理小样本、高不确定性的归因问题——例如电网调度中保护动作、断路器状态与故障类型…

2026/10/18 12:11:18 阅读更多 →
Windows上用VMware运行qcow2镜像:qemu-img转vmdk实战指南

Windows上用VMware运行qcow2镜像:qemu-img转vmdk实战指南

简介:围绕VMware Workstation运行qcow2镜像的操作手册,面向需在本地虚拟机中部署、测试麒麟V10系统的运维与开发人员。手册完整梳理了VMware Workstation 15.x、qemu-img 9.1.0与麒麟V10系统镜像三款工具的准备流程,并分步演示从新建虚拟磁盘…

2026/10/18 12:11:18 阅读更多 →
Python深度学习多特征电力负荷预测:LSTM课程设计实战解析

Python深度学习多特征电力负荷预测:LSTM课程设计实战解析

简介:这是一份基于Python深度学习的多特征电力负荷预测课程设计项目源码与数据压缩包,适合高校学生用于课程设计、期末大作业或毕业设计参考。项目围绕电力负荷预测任务,提供数据预处理、长短期记忆网络模型构建与训练、预测结果可视化等完整…

2026/10/18 12:11:18 阅读更多 →
自进化训练引擎实战:Hermes 用 GRPO+LoRA 跑通 A/B Testing 飞轮

自进化训练引擎实战:Hermes 用 GRPO+LoRA 跑通 A/B Testing 飞轮

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:11:18 阅读更多 →
麻雀算法SSA优化LSTM分类:原理、实现与调参避坑指南

麻雀算法SSA优化LSTM分类:原理、实现与调参避坑指南

简介:面向机器学习与时间序列分类任务的开发者,提供麻雀算法SSA优化LSTM长短期记忆网络的分类实现,可直接用于多分类场景,也可替换为自己的数据集快速验证模型效果。资源包共2个文件,其中Python源码为核心算法实现&…

2026/10/18 12:11:18 阅读更多 →
通信对抗原理作业:定义、干扰技术及场景应用全解析

通信对抗原理作业:定义、干扰技术及场景应用全解析

简介:西电通信对抗原理作业为通信工程、信息安全相关专业学生提供了一份覆盖通信对抗核心知识点的整理性资料,适合期末复习、课程作业对照与考研备考使用。内容围绕通信对抗的定义、分类、技术手段与实践应用展开,具体涉及加密、认证、访问控…

2026/10/18 12:10:17 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →