题意略。

思路:这个题本来打算先推一下公式,然后解方程来算。函数图像大概如下:

最左端为H。但是由于中间那个尖的地方(假设它的高度为h),可能在那个地方有多堆沙包,所以推公式貌似不行。

但是最高高度h和面积之间是存在函数关系的,所有堆沙堡的方式应该都是类似于这样的。所以我们想找出一个方式,使得所用沙包数为n,

且占地最少。也是就说我们要找出最高的且合法的h,并算出它的占地。

详见代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL; LL n,H; LL cal(LL h){
LL ret = ;
ret += h * (h + ) / ;
if(h > H){
ret += (H + h - ) * (h - H) / ;
}
return ret;
} int main(){
scanf("%lld%lld",&n,&H);
LL lft = ,rht = ;
LL ans = n;
while(lft < rht){
LL mid = (lft + rht + )>>;
LL area = cal(mid);
if(area <= n){
lft = mid;
LL temp = mid;
if(mid >= H)
temp += (mid - H);
LL last = (n - area);
temp += last / mid + (last % mid > );
ans = min(ans,temp);
}
else{
rht = mid - ;
}
}
printf("%lld\n",ans);
return ;
}

这里要注意一下,二分的右端值rht,由于在最差情况下,h * (h + 1) / 2 = 1e18,也就是说,hmax = sqrt(2 * 1e18),因此设置为1.5 * 1e9。

最新文章

  1. 初探PHP多进程
  2. HTML5 History 模式
  3. INSERT INTO 语句的语法错误【 OLE报错,office终端执行SQL没有问题】
  4. 【洛谷P1080】国王游戏
  5. canvas 在线画图
  6. LCA和RMQ
  7. (转) C++ static、const和static const 以及它们的初始化
  8. OC2-重写
  9. .net缓存应用与分析
  10. rnqoj-28-合唱队形-最长上升子序列
  11. 基于SQL_ID查看对象大小
  12. [置顶] 宏途_LCD调试流程.
  13. SQL映射文件实现多种方式查询
  14. 计算指定文件的MD5值
  15. PHP 数组反转(值有重复)
  16. 饮冰三年-人工智能-Python-21 Python数据库MySql
  17. vim实现实时自动保存
  18. elasticsearch -- Logstash实现mysql同步数据到elasticsearch
  19. JavaScript 深入之从原型到原型链
  20. [PHP]算法- 判断是否为二叉搜索树的后序遍历序列的PHP实现

热门文章

  1. Linux目录文件
  2. excel表数据生成定长txt数据
  3. Python解释器安装教程和环境变量配置
  4. 金蝶K3 V12.2版本,对已发生业务单据的物料启用辅助计量单位
  5. ansible-service
  6. Mybatis整合Spring 使用
  7. Codeforces Round #192 (Div. 2) (330A) A. Cakeminator
  8. Something wrong with EnCase v8 index search results
  9. ansible批量管理服务 上
  10. umask 默认权限控制和特殊权限