BZOJ4428 : [Nwerc2015]Debugging调试

设$f[i]$为最优策略下调试$i$行代码的时间,则:

$f[1]=0$

$f[i]=\min((j-1)\times p+f[\lceil\frac{i}{j}\rceil])+r$

意义为枚举printf语句的个数,然后尽量均分,并假设坏点在最大的段落里。

考虑记忆化搜索,注意到对于每个$i$来说只有$O(\sqrt{i})$个决策有用,所以时间复杂度为$O(n^\frac{3}{4})$。

#include<cstdio>
typedef long long ll;
int n,r,p,i;ll f[1000010];
inline void up(ll&a,ll b){if(a>b)a=b;}
ll F(int n){
  if(n<2)return 0;
  if(f[n])return f[n];
  ll t=1LL*n*p;
  for(int i=2;i<n;i=(n-1)/((n-1)/i)+1)up(t,1LL*i*p+F((n-1)/i+1));
  return f[n]=t+r-p;
}
int main(){
  scanf("%d%d%d",&n,&r,&p);
  return printf("%lld",F(n)),0;
}

  

时间: 2024-08-11 03:38:10

BZOJ4428 : [Nwerc2015]Debugging调试的相关文章

bzoj 4428: [Nwerc2015]Debugging调试

4428: [Nwerc2015]Debugging调试 Description Your fancy debugger will not help you in this matter. There are many ways in which code can produce different behavior between debug and release builds, and when this happens, one may have to resort to more pr

【bzoj4428】[Nwerc2015]Debugging调试 数论+记忆化搜索

题目描述 一个 $n$ 行的代码出了bug,每行都可能会产生这个bug.你要通过输出调试,在其中加入printf来判断bug出现的位置.运行一次程序的时间为 $r$ ,加入一条printf的时间为 $p$ ,求最坏情况下调出程序的最短时间. 输入 输入包括一行三个整数: n(1≤n≤10^6),代码行的数目; r(1≤r≤10^9),编译和运行程序直到它崩溃的时间量; p(1≤p≤10^9),增加单个的printf行所花费的时间. 输出 输出的最坏情况使用最优策略找到崩溃行的时间. 样例输入 1

linux双机调试

查看内核版本: $ uname -sr 一.选择调试的linux kernel版本 注意: 选择kernel版本时,既要能下载到image和header二进制文件,也要下载符号文件vmlinux和source code. 搜索命令: 搜索linux内核版本 apt-cache search linux-image | grep linux-image-4.10.0 |grep generic 搜索含有dbgsym的内核版本:apt-cache search linux-image | grep

推荐!国外程序员整理的 PHP 资源大全

iadoz 在 Github 发起维护的一个 PHP 资源列表,内容包括:库.框架.模板.安全.代码分析.日志.第三方库.配置工具.Web 工具.书籍.电子书.经典博文等等. 依赖管理 依赖和包管理库 Composer/Packagist:一个包和依赖管理器 Composer Installers:一个多框架Composer库安装器 Pickle:一个PHP扩展安装器 其他的依赖管理 其他的相关依赖管理 Satis:一个静态Composer存储库生成器 Composition:一个在运行时检查C

【PHP开发】国外程序员收集整理的 PHP 资源大全

依赖管理 依赖和包管理库 Composer/Packagist:一个包和依赖管理器 Composer Installers:一个多框架Composer库安装器 Pickle:一个PHP扩展安装器 其他的依赖管理 其他的相关依赖管理 Satis:一个静态Composer存储库生成器 Composition:一个在运行时检查Composer环境的库 Version:语义版本的解析和比较库 NameSpacer -转化下划线到命名空间的库 Patch Installer -使用Composer安装补丁

CSS Specificity--CSS特性、权重、优先级---CSS specificity规则、

CSS Specificity As mentioned above, CSS styles follow an order of specificity and point values to determine(确定) when styles override(覆盖) one another or take precedence(优先). Nettuts recently had a nice article in which the point values for css were ex

HTTP PEM 万能调试法

最核心的任务便是向各位分享一个我从多年的前后端项目中总结而来的「万能」HTTP 调试法,掌握并从网络编程原理上理解它,能让我们顺利定位并解决所有 HTTP 接口问题.由于该方法主要涉及到的知识点包括 HTTP 代理(Proxy).编辑(Edit)与数据模拟(Mock),因此我称之为「HTTP PEM 调试法」. 接下来,我们就针对前面提出的几个问题,详细讲解下 PEM 调试法的思路. 如何调试线上 App 中的 H5 页面? 「HTTP PEM 调试法」之 Proxy 在上一期<猫哥网络编程系列

20145216史婧瑶 《信息安全系统设计基础》第2周学习总结

20145216史婧瑶 <信息安全系统设计基础>第2周学习总结 教材学习内容总结 一.VIM 1.hjkl所表示的即为光标 ←↓↑→,前提是要在normal的状态下.方便记忆j像一个笔就像下箭头. ·i → Insert 模式,可插入文本.按 ESC 回到 Normal 模式. ·A → 输入欲添加文本(在一行后添加文本).按 ESC 回到 Normal 模式. ·x → 删当前光标所在的一个字符. ·:wq → 存盘 + 退出 (:w 存盘, :q 退出) 2.删除类命令: 该命令为操作符d

Verification Mind Games---how to think like a verifier像验证工程师一样思考

1. 有效的验证需要验证工程师使用不同于设计者的思维方式思考问题.具体来说,验证更加关心在严格遵循协议的基础上发现设计里面的bug,搜索corner cases,对设计的不一致要保持零容忍的态度. mindset:一套人们应该持有的确定的态度,有时候又被描述为心里惯性,群体思维,范式,在分析和决策过程中很难抵消mindset的影响. 举一个简单的例子,当你看到任何verification engineer的职位,你会发现这是一个关于语言,方法学,工具以及某种领域的知识集合. 很多有经验的工程师可