题目描述:

点击打开链接

这题题意其实很不好理解,你有一个n行的程序,现在程序运行了r时间之后停止了运行,证明此处有一个bug,现在你需要在程序中加printf来调试找到bug所在的位置,你每次加一个printf所需的时间为p,为你在最坏的情况下最少需要多少时间找到bug。

枚举二分三分四分一直到n-1

查询一般二分查找,这个因为有个printf条件可以实现精准3分到n-1分查找,

 因为三分的话也可以像二分一样确定到底是哪个

 就像1000范围内猜数 如果三分能确定的话就不会用二分 但是三分并不能确定
 

因为你猜数他只告诉你你报的(一个)数 与答案大小的比较

而这个printf可以告诉你2个三个或者更多 所以可以三分四分等等

几分最优是由n的大小和printf辅助时间二者共同确定的

 二分是log2N+printf的时间*log2N 的样子 然后三分是log3N+printf的时间*log3N
所以枚举几分的同时也要记录 n为某个值时的最优时间 下次再到这个值时就不用重复搜索了
#include <bits/stdc++.h>
#include <cmath>
using namespace std; #define ll long long
#define F(i,a,b) for(ll i=a;i<=b;++i)
#define R(i,a,b) for(int i=a;i<b;++i)
#define mem(a,b) memset(a,b,sizeof(a)) ll n;
ll r,p;
ll a[];
ll dfs(ll n)
{
ll ans=1e18;
if(n==||n==) return ;
if(a[n]) return a[n];
F(i,,n-)
{
ans=min(ans,dfs(n/(i+)+((n%(i+))?:))+i*p+r);
}
return a[n]=ans;
}
int main()
{
cin>>n>>r>>p;
ll ans=;
if(n==) { puts("");return ; }
ans=dfs(n);
printf("%I64d\n",ans );
return ;
}

最新文章

  1. 保护眼睛,把常用软件的背景设置成Dark
  2. Tomcat本地服务器搭建
  3. 关于gcd的几个问题
  4. 理解OAuth2.0
  5. REORG TABLESPACE on z/os
  6. lodash的源码(1)
  7. scanf()读取带空格的字符串
  8. java 21 - 12 IO流的打印流
  9. Android IT资讯网络阅读器应用源码
  10. CSharp设计模式读书笔记(19):备忘录模式(学习难度:★★☆☆☆,使用频率:★★☆☆☆)
  11. 转载-Oracle ORACLE的sign函数和DECODE函数
  12. loj6045 「雅礼集训 2017 Day8」价
  13. 蓝书例题之UVa 10253 Series-Parallel Networks
  14. bootstrap3兼容IE8
  15. pycharm 安装第三方库报错:AttributeError: &#39;module&#39; object has no attribute &#39;main&#39;
  16. 自定义控件详解(五):onMeasure()、onLayout()
  17. Unity3D开发之3D按钮的声音播放
  18. redis中的数据类型
  19. git status 查看当前修改文件
  20. Spring+Hessian+Maven+客户端调用实例

热门文章

  1. 基于口令的密码(PBE)
  2. (原創) 如何在Nios II顯示8位數的七段顯示器? (SOC) (Nios II) (SOPC Builder) (DE2-70)
  3. 用两张图告诉你,为什么你的App会卡顿?
  4. NLP入门之语音模型原理
  5. handlebars模板引擎使用初探1
  6. JAVA编程思想 Ch3.6题
  7. POJ 2955 区间DP必看的括号匹配问题,经典例题
  8. Pthon学习相关
  9. 去 HBase,Kylin on Parquet 性能表现如何?
  10. matlab基础知识总结