博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ-1190 生日蛋糕 NOI99
阅读量:4652 次
发布时间:2019-06-09

本文共 1060 字,大约阅读时间需要 3 分钟。

深搜+几个剪枝。

貌似搜索顺序也挺重要的。。。我不知是不是因为这个然后Tle了好久。。。

#include 
#include
#include
#include
#include
#include
#include
#include
#define rep(i, l, r) for(int i=l; i<=r; i++)#define down(i, l, r) for(int i=l; i>=r; i--)#define maxn 23#define MAX 1<<30using namespace std;int n, m, ans, minv[maxn], mins[maxn];void Search(int v, int s, int l, int R, int H){ if (!l) { if (v == n && s < ans) ans = s; return; } if (s+mins[l-1] >= ans || v+minv[l-1] > n || (n-v)*2 >= R*(ans-s)) return; down(r, R-1, l) { if (l == m) s = r*r; int tmp = min((n-v-minv[l-1])/(r*r), H-1); down(h, tmp, l) Search(v+r*r*h, s+2*r*h, l-1, r, h); }}int main(){ scanf("%d%d", &n, &m); ans = n+1; rep(i, 1, m) minv[i] = minv[i-1]+i*i*i; rep(i, 1, m) mins[i] = mins[i-1]+2*i*i; Search(0, 0, m, sqrt((double)(n-minv[m-1])/m)+1, (n-minv[m-1])/(m*m)+1); if (ans == n+1) ans = 0; printf("%d\n", ans); return 0;}
View Code

 

转载于:https://www.cnblogs.com/NanoApe/p/4314076.html

你可能感兴趣的文章
多列转1列 SqlServer 实现oracle10g的 wmsys.wm_concat()--for xml path('')
查看>>
Entity Framework应用:使用Code First模式管理视图
查看>>
【机器学习】贝叶斯公式
查看>>
445端口打开方法
查看>>
生成器
查看>>
Pycharm 创建 Django admin 用户名和密码
查看>>
python2.6升级2.7导致yum无法使用 No module named yum
查看>>
maintenance.go
查看>>
【转载】NativeSQL实例
查看>>
LeetCode--434--字符串中的单词数
查看>>
并发容器之CopyOnWriteArrayList(转载)
查看>>
Spark技术栈
查看>>
日志及参数的乱码问题
查看>>
Python开发简单爬虫
查看>>
克服"水土不服",融云助攻小象直播杀破"出海重围"
查看>>
spring Boot 入门--为什么用spring boot
查看>>
负载均衡
查看>>
tar and war的一些命令
查看>>
BZOJ 1260&UVa 4394 区间DP
查看>>
CentOS或Redhat上装memcached (包括64位系统)
查看>>