【枚举优化】poj2363 Blocks

传送门:poj2363


题目大意:有N个1*1*1的方块,放到一个立方体的盒子里面,求盒子的最小的表面积。


坑爹的题目……想多了,绕远了……


一开始以为意思是放到一个立方体盒子里面,求盒子的最小表面积,在那里找合理的构造方法把我蛋疼得……

后来仔细读题是把这些方块堆成立方体……卧槽……简直跪烂了……


然后又因为最近数论搞多了,就自然地想到把N进行整数拆分,将其因子组合成立方体的三维,求出其中最小的一个表面积。

根据数学知识,V相同的情况下,三维越接近应该S越小,正方体时S最小,于是就以N^1/3为标准开始组合边长……折腾了好久一直跪……


最后怒了……直接开暴力,枚举三维,N^3,不能接受。

因为边长c=n/a/b,省略一维,N^2,由于多case,悬。

又因为a*b

最后枚举    for (int i=1;i<=n;i++)  for (int j=1;i*j<=n;j++)

然后问题就解决了……


这个悲伤的故事需要检讨……惯性思维太重了……水题就不该想多了……

另外注意Hint,用scanf和printf输入输出。

你可能感兴趣的:(水得难以分类,poj)