UVa 668 Parliament
题目描述议会由NNN名代表组成要求将他们分成若干个大小互不相同的小组每天每个小组派出一名代表组成调解委员会且每天委员会的组成必须不同。议会持续工作直到无法再产生新的委员会。要求找到一种分组方案使得议会能工作最长时间并输出各组的大小升序。输入格式第一行为整数MMM表示数据集个数。每组数据包含一个整数NNN5≤N≤10005 \le N \le 10005≤N≤1000。各组之间用一个空行分隔。输出格式对于每组数据输出一行包含若干整数表示分组大小升序空格分隔。每组输出之间用一个空行分隔。样例输入2 7 31输出3 4 2 3 5 6 7 8题目分析本题本质上是一个整数拆分问题将NNN拆分为若干个互不相同的正整数之和使得这些数的乘积最大并输出这些数。因为委员会每天的不同组合数等于所有小组大小的乘积每个小组每天派出一人不同组合数为∏sizei\prod \textit{size}_i∏sizei​要使议会工作最久即最大化乘积。已知结论对于正整数拆分若允许重复则尽量拆分为333但此处要求互不相同因此应选择从222开始的一段连续整数然后将剩余部分均匀分配到较大的数上或者将剩余部分加到最大的数上具体调整。更常用的解法是动态规划。解题思路动态规划设dp[s]\textit{dp}[s]dp[s]表示将总和sss拆分为互不相同的正整数时能获得的最大乘积。同时记录last[s]\textit{last}[s]last[s]表示在最优拆分中最后一个最大的数以便回溯输出方案。转移对于当前总和sss尝试将最后一个数设为jjjjlast[s−j]j \textit{last}[s-j]jlast[s−j]以保证互不相同则dp[s]max⁡(dp[s],dp[s−j]×j)\textit{dp}[s] \max(\textit{dp}[s], \textit{dp}[s-j] \times j)dp[s]max(dp[s],dp[s−j]×j)。初始dp[2]2\textit{dp}[2] 2dp[2]2dp[3]3\textit{dp}[3] 3dp[3]3dp[4]4\textit{dp}[4] 4dp[4]4因为444可以拆为444或131313但111无意义故直接取444。实际上从222开始。由于N≤1000N \le 1000N≤1000动态规划O(N2)O(N^2)O(N2)完全可行。回溯输出从NNN开始根据last[N]\textit{last}[N]last[N]不断减去该数直到N0N0N0得到所有拆分出的数升序输出。复杂度分析动态规划O(N2)O(N^2)O(N2)N≤1000N \le 1000N≤1000约10610^6106次运算极快。空间复杂度O(N)O(N)O(N)。代码实现// Parliament// UVa ID: 668// Verdict: Accepted// Submission Date: 2017-10-26// UVa Run Time: 0.050s//// 版权所有C2017邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;constintPOSITIVE1,NEGATIVE-1,EQUAL0;classBigInteger{friendBigIntegeroperator*(constBigInteger,constBigInteger);friendintcompare(constBigInteger,constBigInteger);friendbooloperator(constBigInteger,constBigInteger);public:BigInteger(){};BigInteger(constint);~BigInteger(){};private:voidzeroJustify(void);staticconstintbase10000;staticconstintwidth4;intsign;vectorintdigits;};BigInteger::BigInteger(constintvalue){if(value0){signPOSITIVE;digits.push_back(0);}else{sign(value0?POSITIVE:NEGATIVE);intnumberabs(value);while(number){digits.push_back(number%base);number/base;}}zeroJustify();}voidBigInteger::zeroJustify(void){for(intidigits.size()-1;i1;i--){if(digits[i]0)digits.erase(digits.begin()i);elsebreak;}if(digits.size()1digits[0]0)signPOSITIVE;}intcompare(constBigIntegerx,constBigIntegery){if(x.signPOSITIVEy.signNEGATIVE||x.signNEGATIVEy.signPOSITIVE)return(x.signPOSITIVE?1:-1);intxDigitNumberx.digits.size()-1;for(;xDigitNumberx.digits[xDigitNumber]0;xDigitNumber--);intyDigitNumbery.digits.size()-1;for(;yDigitNumbery.digits[yDigitNumber]0;yDigitNumber--);if(xDigitNumberyDigitNumber)return(x.signPOSITIVE?1:-1);if(xDigitNumberyDigitNumber)return(x.signNEGATIVE?1:-1);for(intindexxDigitNumber;index0;index--){if(x.digits[index]y.digits[index])return(x.signPOSITIVE?1:-1);if(x.digits[index]y.digits[index])return(x.signNEGATIVE?1:-1);}return0;}booloperator(constBigIntegerx,constBigIntegery){returncompare(x,y)0;}BigIntegeroperator*(constBigIntegerx,constBigIntegery){BigInteger z;z.signx.sign*y.sign;z.digits.resize(x.digits.size()y.digits.size());fill(z.digits.begin(),z.digits.end(),0);for(inti0;iy.digits.size();i)for(intj0;jx.digits.size();j){z.digits[ij]x.digits[j]*y.digits[i];z.digits[ij1]z.digits[ij]/z.base;z.digits[ij]%z.base;}z.zeroJustify();returnz;}constBigInteger ZEROBigInteger(0),ONEBigInteger(1),TWOBigInteger(2);BigInteger product[1010];intmemo[1010];intmain(intargc,char*argv[]){cin.tie(0),cout.tie(0),ios::sync_with_stdio(false);for(inti0;i1001;i)product[i]ZERO;for(inti2;i4;i)product[i]BigInteger(i),memo[i]i;for(inti2;i1001;i)for(intjmemo[i]1;ji1001;j){BigInteger tproduct[i]*BigInteger(j);if(product[ij]t){product[ij]t;memo[ij]j;}}intcases;cincases;intn;for(intc1;ccases;c){cinn;vectorintsequence;while(n0){sequence.push_back(memo[n]);n-memo[n];}if(c1)cout\n;reverse(sequence.begin(),sequence.end());for(inti0;isequence.size();i){if(i)cout ;coutsequence[i];}cout\n;}return0;}总结本题通过动态规划求最大乘积拆分并记录拆分方案输出分组大小。关键点包括将问题转化为最大化乘积的互不相同正整数拆分。使用大整数存储乘积因为N1000N1000N1000时乘积极大。记录memo[s]表示最优拆分中最大的数方便回溯。该解法是动态规划在整数拆分中的典型应用适用于NNN中等规模的问题。输出时注意每组间的空行。

相关新闻

国内免费AI聊天机器人(ChatGPT)横向评测与实战指南(上)

国内免费AI聊天机器人(ChatGPT)横向评测与实战指南(上)

1. 国内免费AI聊天机器人现状概览这两年AI聊天机器人突然火了起来,ChatGPT的爆红让国内也涌现出一批优秀的免费AI助手。这些工具不仅能陪你聊天解闷,还能帮你写文案、生成代码、制定学习计划,甚至画插画。作为一个长期关注AI领域的老玩家&…

2026/7/13 13:02:13阅读更多 →
B站视频下载器终极指南:3步解锁大会员4K和充电专属内容

B站视频下载器终极指南:3步解锁大会员4K和充电专属内容

B站视频下载器终极指南:3步解锁大会员4K和充电专属内容 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 还在为无法离线观看…

2026/7/13 13:02:13阅读更多 →
C++ vector与map深度解析:从原理到实战的性能优化指南

C++ vector与map深度解析:从原理到实战的性能优化指南

1. 项目概述:为什么vector和map是C程序员的左膀右臂如果你写过C,那你肯定绕不开vector和map。这两个家伙,一个来自序列容器家族,一个来自关联容器家族,几乎承包了日常开发中80%的数据存储和查找需求。我见过不少新手&a…

2026/7/13 13:02:13阅读更多 →
AI自动化科研突破:弱监督强假说验证与成本效益分析

AI自动化科研突破:弱监督强假说验证与成本效益分析

1. 实验背景与核心突破2026年4月,Anthropic研究团队在AI对齐领域取得突破性进展。他们设计了一个名为"自动化对齐研究员"(Automated Alignment Researchers)的实验框架,让9个Claude Opus 4.6副本在完全自主的情况下开展科研工作。这个实验最惊…

2026/7/13 14:02:22阅读更多 →
Anthropic Agent与Skills协同架构设计与工程实践

Anthropic Agent与Skills协同架构设计与工程实践

1. Anthropic Agent与Skills协同架构解析 最近在AI工程领域,Anthropic官方披露的Agent与Skills协同工作机制引起了广泛关注。作为一名长期跟踪AI架构演进的技术从业者,我将结合官方资料和工程实践,深度拆解这套系统的设计哲学与实现细节。 A…

2026/7/13 14:02:22阅读更多 →
人体关键点检测1:主流数据集详解与实战下载指南

人体关键点检测1:主流数据集详解与实战下载指南

1. 人体关键点检测技术概述 人体关键点检测(Human Keypoints Detection)是计算机视觉领域的基础任务之一,通常也被称为人体姿态估计(2D Pose Estimation)。这项技术通过定位人体关节点的空间位置,将人体姿…

2026/7/13 14:02:22阅读更多 →
STM32嵌入式开发实践:从LED闪烁到电机驱动的完整移植与问题解决

STM32嵌入式开发实践:从LED闪烁到电机驱动的完整移植与问题解决

1. LED灯闪烁代码移植与中断验证 1.1 移植目的与作用 核心作用:验证中断频率是否正确验证逻辑链:LED闪烁 → TIM1中断正常 → PID控制循环正常 → 系统正常运行 1.2 移植过程中的注意事项 文件格式规范:.c和.h文件最后要有一个空行&#…

2026/7/13 14:02:22阅读更多 →
即插即用的时序感知特征融合模块(TFAM)原理与代码实战,轻松提升检测、分割、分类任务性能

即插即用的时序感知特征融合模块(TFAM)原理与代码实战,轻松提升检测、分割、分类任务性能

1. 时序信息在特征融合中的重要性想象一下你在看一部电影,如果只给你看其中一帧画面,你可能很难理解剧情发展。同样的道理,在计算机视觉任务中,单帧图像往往无法充分表达动态场景的完整信息。这就是为什么时序信息在特征融合中如此…

2026/7/13 14:02:22阅读更多 →
3步实现Windows电脑接收苹果设备投屏:免费AirPlay 2完整方案

3步实现Windows电脑接收苹果设备投屏:免费AirPlay 2完整方案

3步实现Windows电脑接收苹果设备投屏:免费AirPlay 2完整方案 【免费下载链接】airplay2-win Airplay2 for windows 项目地址: https://gitcode.com/gh_mirrors/ai/airplay2-win 你是否曾羡慕苹果设备间的无缝投屏体验,却因Windows电脑无法接收iPh…

2026/7/13 13:57:22阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/13 4:47:19阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/13 0:50:34阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/13 4:52:09阅读更多 →
卡梅德生物技术快报|蛋白质分离纯化:肠激酶可溶性原核表达 + 两步层析全参数|标准化蛋白质分离纯化 SOP

卡梅德生物技术快报|蛋白质分离纯化:肠激酶可溶性原核表达 + 两步层析全参数|标准化蛋白质分离纯化 SOP

研究痛点提出(提出问题)重组肠激酶是融合标签切除核心工具酶,当前原核表达体系存在三大标准化难题,直接阻碍可复现的蛋白质分离纯化流程搭建:Trx、GST、单 SUMO 标签融合产物绝大多数为包涵体,沉淀占比超 9…

2026/7/13 0:04:58阅读更多 →
语音转文字工具AsrTools:让音频整理变得简单高效

语音转文字工具AsrTools:让音频整理变得简单高效

语音转文字工具AsrTools:让音频整理变得简单高效 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate text …

2026/7/13 0:04:58阅读更多 →
Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 你是否曾经想要调整Palwor…

2026/7/13 0:04:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/13 4:21:17阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/13 4:08:53阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/12 21:43:43阅读更多 →