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

P1679-完全背包

P1679 神奇的四次方数

题目背景

在你的帮助下,v 神终于帮同学找到了最合适的大学,接下来就要通知同学了。在班级里负责联络网的是 dm 同学,于是 v 神便找到了 dm 同学,可 dm 同学正在忙于研究一道有趣的数学题,为了请 dm 出山,v 神只好请你帮忙解决这道题了。

题目描述

将一个整数 \(m\) 分解为 \(n\) 个四次方数的和的形式,要求 \(n\) 最小。例如,当 \(m=706\) 时,因为 \(706=5^4+3^4\),所以有 \(n=2\)。可以证明此时 \(n\) 最小。

输入格式

一行,一个整数 \(m\)

输出格式

一行,一个整数 \(n\)

输入输出样例 #1

输入 #1

706

输出 #1

2

说明/提示

数据范围及约定

  • 对于 \(30\%\) 的数据,\(m \le 5000\)
  • 对于 \(100\%\) 的数据,\(m \le 100,000\)

观察到这是一个「用若干个数凑出指定和,并让个数最少」的问题,比较像背包模型。
样例虽然用了不同的数,但题目并没有要求“四次方数互不相同”,同一个四次方数可以使用多次,所以这是一个 完全背包问题

我们定义状态:

  • \(f[i]\):表示「凑出和为$ i$ 时,最少需要多少个四次方数」。

先预处理出所有不超过 (m) 的四次方数,存到数组 (w) 里,即所有满足 (i^4 \le m) 的值。

初始化方面:

  • \(f[0] = 0\),表示凑出 0 不需要任何数;
  • 对于 \(1 \le i \le m\),初值设为一个很大的数,表示「暂时还凑不出来」,后面通过转移不断取最小值。

状态转移时,可以把数组 \(w\) 中的每个四次方数 \(w_k\) 看作「最后一个被选的数」。
如果当前要凑的和是 \(i\),并且 \(i \ge w_k\),那么先凑出和为 \(i - w_k\),再加上这个 \(w_k\),总共使用的四次方数个数是:

\([ f[i - w_k] + 1 ]\)

因为最后一个数可以是 \(w\) 数组里的任意一个四次方数,所以我们要在所有这些选择中取最小值,因此有转移:

\([ f[i] = \min\big(f[i],\ f[i - w_k] + 1\big) ]\)

由于每个四次方数可以被重复使用,这是一个完全背包模型。实现时,外层枚举每个四次方数 $(w_k),内层 $(i) 从 \((w_k)\) 增加到 \((m)\),这样可以保证同一个四次方数在同一层中被多次使用。

最终,\((f[m])\) 就表示凑出和为 \((m)\) 的最少四次方数个数,即为所求答案。

void solve()
{int m;cin >> m;vector<int> w;w.push_back(0);for(int i = 1; i * i * i * i <= m; i++){w.push_back(i * i * i * i);}vector<int> dp(m + 1, INF32);dp[0] = 0;int n = w.size();for(int i = 1; i <= n; i++){for(int j = w[i]; j <= m; j++){dp[j] = min(dp[j], dp[j - w[i]] + 1);}}cout << dp[m] << "\n";
}
http://www.zskr.cn/news/54752.html

相关文章:

  • 2025年知名的稀土硝酸盐应用效果评测榜
  • 2025年11月工商数据企业服务排行:从数据维度到应用场景的全方位评测
  • 2025年11月工商数据公司专业评价:从资质认证到应用场景的深度剖析
  • 【GitHub每日速递 20251120】神器 nvm 全攻略:多版本 Node 自由切换,安装使用疑难一网打尽
  • 莫队二次离线学习笔记
  • 2025年靠谱的无醛实木板厂家最新TOP排行榜
  • 2025年质量好的平锁扣板金属屋面用户好评厂家排行
  • AI元人文理论体系:从价值原语化到阈值管理的完整建构
  • 1000多的vivo手机哪款比较好
  • AI元人文思想体系综论:构建数字文明的伦理基石
  • 应用安全 --- IDAPro函数控制流分析
  • AI元人文:阈值理论体系——自由、公平、安全的动态边界与调控艺术
  • AI元人文三值纠缠理论:从心智结构到文明形态的统一场论
  • Google Antigravity 登录不了等问题的解决方法
  • Windows-sfc
  • 20232325 2025-2026-1 《网络与系统攻防技术》实验六实验报告
  • 广东工业新手赛 我不吃水果
  • 用PyTorch从零搭建一个Transformer模型 - Sanny.Liu
  • 2025家装管材及市政管道厂家怎么选?昆明荣德福,从PVC管材到排水家装/市政管,静音防堵+安装便捷,绿色建材认证+规模化产能实力上榜
  • 20251119 之所思 - 人生如梦
  • 11.119
  • 2025最新云南旅行社TOP5推荐:深耕昆明等云南全域,自驾游 + 本地游 + 个性化定制,解锁深度体验引领个性化旅游新体验
  • Debian 12/13可用的华宇拼音输入法
  • VB6版Dll文件注册器 - 开源研究系列文章 - 个人小作品
  • linux -static
  • 2025沧州防水、漏水维修、堵漏、漏水检测、防水补漏公司最新top5推荐:老旧房屋 / 新房漏水/商业工建防水解决方案排行
  • 前端跨标签页通信方案(下)
  • 2025农膜厂商最新top推荐:三光膜/ 大棚膜/水池布优质供应商
  • Ruby 与 Tesseract 实现英文数字验证码识别
  • Postman关于AES的加解密