DFS-生日蛋糕
2024-09-05 06:39:20
一道深搜题,看了这两个博客才懂的。
http://blog.csdn.net/blesslzh0108/article/details/53486168
http://blog.csdn.net/v5zsq/article/details/46575215
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const int maxn = 0x3f3f3f3f;
int minv[], mins[];
int ans, mh,n, m; void dfs(int v, int s, int level, int r, int h)
{
if (level == ) {
if (v == n&&s < ans)
ans = s;
return;
}
if (v + minv[level - ] > n) return;
if (s + mins[level - ] > ans) return;
if ( * (n - v) / r + s >= ans) return;
for (int i = r - ; i >= level; i--) {
if (level == m) s = i*i;
mh = min(h - , (n - v - minv[level - ]) / (i*i));
for (int j = mh; j >= level; j--)
dfs(v + i*i*j, s + * i*j, level - , i, j);
}
} int main()
{
minv[] = , mins[] = ;
for (int i = ; i <= ; i++) {
minv[i] = minv[i - ] + i*i*i;
mins[i] = mins[i - ] + * i*i;
}
while (scanf("%d%d",&n,&m)==)
{
ans = maxn;
dfs(, , m, n + , n + );
if (ans == maxn) ans = ;
printf("%d\n", ans);
}
return ;
}
最新文章
- 【6年开源路】FineUI家族今日全部更新(FineUI + FineUI3to4 + FineUI.Design + AppBox)!
- Addthis
- DWT小波变换及其在时间序列数据预测中的应用
- Perfect Scrollbar – 完美的 jQuery 滚动条插件
- Revit API 楼板开洞
- nova-network
- Linux学习 -- Shell基础 -- Bash基本功能
- 自定义仿 QQ 健康计步器进度条
- 201521123078《Java程序设计》第2周学习总结
- 微信小程序天坑--图片汉字命名
- [Codeforces 919F]A Game With Numbers
- 利用BLEU进行机器翻译检测(Python-NLTK-BLEU评分方法)
- 以Attribute加上Header验证
- mongo连接拒绝10061原因
- 【转】Oracle virtual column(虚拟列)
- adb环境变量配置
- [转]urllib模块urlretrieve方法
- Allegro中常见的文件格式
- hihocoder博弈游戏&#183;Nim游戏&#183;三
- win8.1rtm专业版无法安装net3.5还有iis