codeforces Gym - 101485 D Debugging (2015-2016 Northwestern European Regional Contest (NWERC 2015))
2024-09-03 16:17:32
题目描述:
这题题意其实很不好理解,你有一个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 ;
}
最新文章
- 保护眼睛,把常用软件的背景设置成Dark
- Tomcat本地服务器搭建
- 关于gcd的几个问题
- 理解OAuth2.0
- REORG TABLESPACE on z/os
- lodash的源码(1)
- scanf()读取带空格的字符串
- java 21 - 12 IO流的打印流
- Android IT资讯网络阅读器应用源码
- CSharp设计模式读书笔记(19):备忘录模式(学习难度:★★☆☆☆,使用频率:★★☆☆☆)
- 转载-Oracle ORACLE的sign函数和DECODE函数
- loj6045 「雅礼集训 2017 Day8」价
- 蓝书例题之UVa 10253 Series-Parallel Networks
- bootstrap3兼容IE8
- pycharm 安装第三方库报错:AttributeError: &#39;module&#39; object has no attribute &#39;main&#39;
- 自定义控件详解(五):onMeasure()、onLayout()
- Unity3D开发之3D按钮的声音播放
- redis中的数据类型
- git status 查看当前修改文件
- Spring+Hessian+Maven+客户端调用实例
热门文章
- 基于口令的密码(PBE)
- (原創) 如何在Nios II顯示8位數的七段顯示器? (SOC) (Nios II) (SOPC Builder) (DE2-70)
- 用两张图告诉你,为什么你的App会卡顿?
- NLP入门之语音模型原理
- handlebars模板引擎使用初探1
- JAVA编程思想 Ch3.6题
- POJ 2955 区间DP必看的括号匹配问题,经典例题
- Pthon学习相关
- 去 HBase,Kylin on Parquet 性能表现如何?
- matlab基础知识总结