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/8/8 10:37:25 阅读更多 →
拯救者工具箱完全指南:让你的联想游戏本性能翻倍的终极方案

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

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

2026/8/8 10:37:25 阅读更多 →
08 材质、透明度与显示模式

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

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

2026/8/8 10:37:25 阅读更多 →

最新新闻

AI赋能知识管理:构建智能第二大脑的方法论与工具链实践

AI赋能知识管理:构建智能第二大脑的方法论与工具链实践

1. 项目概述:当知识管理遇上AI,会发生什么? 作为一名在知识管理和效率工具领域折腾了十多年的老博主,我亲眼见证了从纸质笔记本到云笔记,再到如今AI全面渗透的整个过程。最近几年,我自己的知识库规模膨胀到…

2026/8/8 11:32:05 阅读更多 →
NS模拟器管理革命:NsEmuTools如何用Rust+Tauri重新定义自动化配置体验

NS模拟器管理革命:NsEmuTools如何用Rust+Tauri重新定义自动化配置体验

NS模拟器管理革命:NsEmuTools如何用RustTauri重新定义自动化配置体验 【免费下载链接】ns-emu-tools 一个用于安装/更新 NS 模拟器的工具 项目地址: https://gitcode.com/gh_mirrors/ns/ns-emu-tools 传统NS模拟器管理如同在技术迷宫中摸索前行——版本碎片化…

2026/8/8 11:32:05 阅读更多 →
从零构建LLM评估框架:实战Harness实现与多模型对比测试

从零构建LLM评估框架:实战Harness实现与多模型对比测试

1. 项目缘起:从“黑盒”到“白盒”的探索最近在折腾大模型应用开发时,我遇到了一个挺典型的问题:手头有好几个不同的LLM(大语言模型)服务,比如OpenAI的GPT、Claude,还有几个开源的模型。每次想测…

2026/8/8 11:32:05 阅读更多 →
KMS智能激活:Windows与Office一键激活终极解决方案

KMS智能激活:Windows与Office一键激活终极解决方案

KMS智能激活:Windows与Office一键激活终极解决方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活和Office产品激活而烦恼吗?KMS_VL_ALL_AIO智能激…

2026/8/8 11:32:05 阅读更多 →
终极输入法词库转换解决方案:如何实现跨平台词库无缝迁移

终极输入法词库转换解决方案:如何实现跨平台词库无缝迁移

终极输入法词库转换解决方案:如何实现跨平台词库无缝迁移 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 深蓝词库转换(ImeWlConverter&#…

2026/8/8 11:32:05 阅读更多 →
西宁市网站建设公司排名全解析:避坑指南与深度选购策略

西宁市网站建设公司排名全解析:避坑指南与深度选购策略

在这个移动互联网几乎渗透到生活每一个角落的时代,对于西宁市的中小企业乃至大型集团来说,拥有一套专业、美观且功能强大的企业网站,早就不是“锦上添花”的选项,而是“刚需”中的刚需。你可能在深夜里辗转反侧,看着手里那份过时的官网发愁;也可能在拜访客户时,因为网站…

2026/8/8 11:31:05 阅读更多 →

日新闻

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

当下AI应用飞速普及,无数企业下场搭建智能体系统,可落地阶段难题接踵而至:上下文无限堆积频繁爆栈、AI工具调用准确率低下、Token成本居高不下、企业数据权限混乱暗藏安全隐患……很多团队卡在架构搭建环节,空有前沿技术概念&…

2026/8/8 0:00:07 阅读更多 →
PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码 【免费下载链接】php-qrcode A PHP QR Code generator and reader with a user-friendly API. 项目地址: https://gitcode.com/gh_mirrors/ph/php-qrcode 在当今数字时代,二维码已…

2026/8/8 0:00:08 阅读更多 →
UniApp微信小程序隐私保护组件开发:从原理到实战

UniApp微信小程序隐私保护组件开发:从原理到实战

1. 项目缘起:为什么我们需要一个隐私保护通用组件?最近在维护一个基于uniapp开发的微信小程序矩阵时,我遇到了一个非常棘手的问题。随着平台对用户隐私保护的要求越来越严格,几乎每一个新版本发布,或者在某些特定机型&…

2026/8/8 0:00:08 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/8 8:58:26 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/7 23:24:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/7 23:54:54 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →