【ACWing】587. 吃蛋糕
题目地址:
https://www.acwing.com/problem/content/589/
惠特利在参加世界上最好的派对:它有着无数的蛋糕!每个蛋糕都呈具有整数边长( c m cm cm)的正方形形状。派对上有无限多个边长为任意整数的蛋糕。蛋糕都有相同的高度,所以我们只考虑它们的面积。惠特利决定吃一个或多个蛋糕,使其总面积恰好为 N c m 2 N\ cm^2 N cm2。你能帮他计算一下他最少需要吃掉多少个蛋糕吗?
输入格式:
第一行包含整数 T T T,表示共有 T T T组测试数据。每组数据占一行,包含一个整数 N N N,为惠特利想吃掉的蛋糕的总面积。
输出格式:
每组数据输出一个结果,每个结果占一行。结果表示为Case #x: y
,其中 x x x是组别编号(从 1 1 1开始), y y y是惠特利最少需要吃掉的蛋糕数量。
数据范围:
1 ≤ T ≤ 100 1≤T≤100 1≤T≤100
1 ≤ N ≤ 10000 1≤N≤10000 1≤N≤10000
可以视为有无限个体积为 1 , 2 2 , 3 2 , . . . 1,2^2,3^2,... 1,22,32,...的物品,填满容积为 N N N的背包的最少物品个数。这是个完全背包问题。设 f [ i ] [ j ] f[i][j] f[i][j]是只从前 i i i个物品里选的情形下,要填满容积为 j j j的背包的最少物品个数,那么 f [ 0 ] [ 0 ] = 1 , f [ 0 ] [ . > 0 ] = ∞ f[0][0]=1,f[0][.>0]=\infty f[0][0]=1,f[0][.>0]=∞,后者表示不存在这样的方案。我们先将所有 f [ . > 0 ] f[.>0] f[.>0]的数都初始化为 ∞ \infty ∞,然后递推: f [ i ] [ j ] = min { f [ i − 1 ] [ j ] , min k 2 ≤ j { 1 + f [ i ] [ j − k 2 ] } } f[i][j]=\min\{f[i-1][j],\min_{k^2\le j}\{1+f[i][j-k^2]\}\} f[i][j]=min{f[i−1][j],k2≤jmin{1+f[i][j−k2]}}注意如果某个 f [ i ] [ j − k 2 ] = ∞ f[i][j-k^2]=\infty f[i][j−k2]=∞说明不存在方案,要略过。可以写成一维数组来递推,其中体积要从小到大循环。代码如下:
#include <iostream>
#include <cstring>
using namespace std;const int N = 10010, INF = 0x3f3f3f3f;
int n;
int f[N];int main() {int T;cin >> T;for (int t = 1; t <= T; t++) {cin >> n;memset(f, 0x3f, sizeof f);f[0] = 0;for (long i = 1; i * i <= n; i++)for (int j = i * i; j <= n; j++)if (f[j - i * i] != INF)f[j] = min(f[j], f[j - i * i] + 1);printf("Case #%d: %ld\n", t, f[n]);}return 0;
}
时间复杂度 O ( N N ) O(N\sqrt N) O(NN ),空间 O ( N ) O(N) O(N)。
【ACWing】587. 吃蛋糕相关推荐
- 先吃奶油还是先吃蛋糕--推迟满足感
先吃奶油还是先吃蛋糕--推迟满足感 作者:M·斯科特·派克 来源:意林 不久前,一位30岁的财务分析师向我请求帮助,她想纠正自己最近几个月里总是拖延工作的恶习.我们探讨了她对老板的看法,老板对她的态度 ...
- 切蛋糕 爱丽丝梦游仙境,来到了疯帽子的茶会。茶会上有n只兔子,疯帽子作为绅士,今天专门为爱丽丝和兔子们准备了一个圆形的慕斯蛋糕,疯帽子要把这块蛋糕平均分给爱丽丝和兔子们(疯帽子自己不吃蛋糕)
Description 爱丽丝梦游仙境,来到了疯帽子的茶会.茶会上有n只兔子,疯帽子作为绅士,今天专门为爱丽丝和兔子们准备了一个圆形的慕斯蛋糕,疯帽子要把这块蛋糕平均分给爱丽丝和兔子们(疯帽子自己不吃 ...
- 1018 - 数论之扩展欧几里得 - 吃蛋糕
吃蛋糕 描述 Beny 想要用蛋糕填饱肚子.Beny 一共想吃体积为 c 的蛋糕,他发现有两种蛋糕可以吃,一 种体积为 a,一种体积为 b,但两种蛋糕各有特色.Beny 想知道他一共有多少种不同吃法, ...
- 生肖迷宫之福娃吃蛋糕问题
[问题描述] 5个福娃吃5个奥运蛋糕,1只福娃吃掉1个蛋糕需要60分钟,怎样才能确定一段30分钟的时间,太简单了,那么10分钟呢?还不难吧,但是9.5分钟呢?最后如何确定一段少于10秒钟的时间呢(不算 ...
- C++题解:吃蛋糕 (新)
题目链接 题目描述 Beny 想要用蛋糕填饱肚子.Beny 一共想吃体积为 c 的蛋糕,他发现有两种蛋糕可以吃,一种体积为 a,一种体积为 b,但两种蛋糕各有特色.Beny 想知道他一共有多少种不同吃 ...
- 【WOJ 4078】吃蛋糕
[题目] 题目描述: Beny 想要用蛋糕填饱肚子.Beny 一共想吃体积为 c c c 的蛋糕,他发现有两种蛋糕可以吃,一 种体积为 a a a,一种体积为 b b b,但两种蛋糕各有特色.Beny ...
- 【JZOJ A组】吃蛋糕
Description Beny 想要用蛋糕填饱肚子.Beny 一共想吃体积为 c 的蛋糕,他发现有两种蛋糕可以吃,一种体积为 a,一种体积为 b,但两种蛋糕各有特色.Beny 想知道他一共有多少种不 ...
- 2524. 吃蛋糕 (新) (Standard IO)
题目描述 Beny 想要用蛋糕填饱肚子.Beny 一共想吃体积为 c 的蛋糕,他发现有两种蛋糕可以吃,一种体积为 a,一种体积为 b,但两种蛋糕各有特色.Beny 想知道他一共有多少种不同吃法, 使得 ...
- 首个双手控制脑机接口:开颅手术 10 小时植入 6 个电极,瘫痪人士用意念吃蛋糕
本文转载自 雷锋网,作者 付静 有这样一位名为 Buz Chmielewski 的男子,曾在一次出海冲浪时不幸遭遇意外,四肢瘫痪.从正值十几岁的大好年华到此后的 30 余年里,Buz Chmielew ...
最新文章
- 构造函数与折构函数(c++细节篇五)
- python tkinter控件_python GUI作业:使用tkinter的重要控件
- 关于蚁剑/菜刀无法连接shell的一种可尝试解决方案
- 怎么汉语_3分钟,让您明白孩子的汉语应该怎么学!(13年级家长必看)
- iPhone应用程序编程指南(图形和描画)
- UnixLinux大学教程目录
- 针对灰鸽子声明 金山“四问”灰鸽子工作室
- Datastructure
- 吴恩达神经网络和深度学习-学习笔记-7-正则化regularization方法
- mysql innodb cluster服务器搭建
- mysql 删除数据后myd_关于mysql 删除数据后(.MYD,MYI)物理空间未释放
- 五分钟看懂vue路由守卫
- 修改NPM的默认安装路径
- Arduino入门(一)
- 微信小程序转码机器人❤️免费无水印❤️
- 博士申请 | 美国乔治梅森大学计算机系招收机器学习方向全奖博士生
- Excel 表列序号
- 解决Duplicate entry '……
- svn设置 修改服务器,svn设置 修改服务器ip地址
- java音视频开发技术_FFmpeg音视频核心技术精讲与实战