博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【NOIP校内模拟】塔
阅读量:5276 次
发布时间:2019-06-14

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

1452620-20180927232505249-455699371.png

1452620-20180927232514770-1804267381.png

我们可以这样考虑

X 必定是由若干个立方数拼起来的 因此我们可以逆着求 只需关心每次取哪个立方数即可

设a是最大的 a 使得 a^3 不超过 m

分析样例 我们发现在第一次的时候 就可以取a或者a-1

那第一次取a-2 a-3....行不行呢?

1.用 a,剩下m-a^3

2.用 a-1, X 最大为 a^3-1, m2 = a^3-1-(a-1)^3=a^2-a
3.用 a-2, X 最大为(a-1)^3-1,m2=(a-1)^3-1-(a-2)^3=a^2-3a+6
......
显然 2 一定比 3 优

因此第一次只能取a或者a-1,那后来怎么办呢?

其实后面的每一次都是从a,a-1里选,因为让每一步抉择都最优(X最大),类似于dp思想,总的才会最优

代码不保证正确性,经供参考

#include
#define ll long longusing namespace std;ll m;pair
ans;ll pow3(ll x){ return x*x*x;}void search(ll m,ll step,ll spend){ if(m==0) { ans=max(ans,make_pair(step,spend)); return; } ll x=1; while(pow3(x+1)<=m) x++; search(m-pow3(x),step+1,spend+pow3(x)); search(pow3(x)-1-pow3(x-1),step+1,spend+pow3(x-1));}int main(){ cin>>m; search(m,0,0); cout<
<<'\n'<

转载于:https://www.cnblogs.com/Patrickpwq/articles/9716327.html

你可能感兴趣的文章
运营商竞速搭建手机支出公司
查看>>
解决MySQL数据库作古掉以及谢绝任事的办法
查看>>
红杉资源出售麦考林29%股份套现1亿美元
查看>>
DB2 9 运用开发(733 测验)认证指南,第 1 部分: 数据库工具与编程办法(1)
查看>>
Informix IDS 11系统经管(918考试)认证指南,第 5 部分: 数据库做事器行使(5)
查看>>
Linux下Makefile学习笔记
查看>>
Centos6.5搭建bugzilla
查看>>
ANE的开发需求一般太少,这个静态库如何包含第三方
查看>>
Jquery插件(一) webupload上传插件
查看>>
POJ 3159 最短路 SPFA
查看>>
JavaScript&jQuery.返回多个值的函数
查看>>
suoi46 最大和和 (线段树)
查看>>
[模板]欧几里得算法/扩展欧几里得
查看>>
图标大小
查看>>
二叉搜索树的查询操作《算法导论》12.2
查看>>
Codeforces Round #183 (Div. 2)
查看>>
配置一个 MVC 项目时 遇到的
查看>>
设计模式:代理模式是什么,Spring AOP还和它有关系?
查看>>
python运算符
查看>>
CSSOM之getComputedStyle,currentStyle,getPropertyValue,getAttribute
查看>>