博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分答案&【NOIP 2015】跳石头
阅读量:4578 次
发布时间:2019-06-08

本文共 1407 字,大约阅读时间需要 4 分钟。

二分答案估计是我应该早就学会,但拖到现在才去好好看的套路吧!

二分答案是指在答案具有单调性的前提下,利用二分的思想枚举答案,将求解问题转化为验证结果。首先需要估计答案的上下界,然后不断取区间中点进行验证(这就要求答案的验证应当简单可行),并通过验证结果不断更新答案区间,最终得到答案。不难看出,朴素的枚举验证时间复杂度是O(n)的,而二分可以做到O(logn)。更令人欣喜的是,二分答案的问题往往有固定的问法,比如:令最大值最小(最小值最大),求满足条件的最大(小)值等。

 

一道模板题练个手:


 

这几乎是最简单的二分答案模板题,在明白二分答案后,是可以做到一遍AC的。题目的问法也十分模板(求最短跳跃距离的最大值),答案是单调的,拿走的石头越多,最短跳跃距离越大。我们可以估计最大的最短跳跃距离(1<=ans<=L)。然后取区间中点,进行验证。若发现某次跳跃比这个最短跳跃距离还小,那就把这块石头拿走。总共拿走的石头数不超过M,就说明区间中点符合要求,就将区间更新为右半区间(因为要求最大的最短跳跃距离);反之,就将区间设为左半区间。

1 #include 
2 3 inline int get_num() { 4 int num = 0; 5 char c = getchar(); 6 while (c < '0' || c > '9') c = getchar(); 7 while (c >= '0' && c <= '9') 8 num = num * 10 + c - '0', c = getchar(); 9 return num;10 }11 12 const int maxn = 5e4 + 5;13 14 int L, n, m, stone[maxn];15 16 inline int check(int x) {17 int cnt = 0, last = 0;18 for (int i = 1; i <= n; ++i) {19 if (stone[i] - stone[last] < x) ++cnt;20 else last = i;21 }22 if (cnt <= m) return 1;23 else return 0;24 }25 26 int main() {27 L = get_num(), n = get_num(), m = get_num();28 for (int i = 1; i <= n; ++i) stone[i] = get_num();29 int l = 1, r = L + 1;30 while (r - l > 1) {31 int mid = l + (r - l) / 2;32 if (check(mid)) l = mid;33 else r = mid;34 }35 printf("%d", l);36 return 0;37 }
AC代码

 

转载于:https://www.cnblogs.com/Mr94Kevin/p/9538431.html

你可能感兴趣的文章
python3基础系列之六【python推导式】
查看>>
YAML格式介绍
查看>>
JAVA常用工具【一】
查看>>
JAVA快速开发项目汇总
查看>>
Gitblit服务器搭建【基于windown系统】
查看>>
jq 移动端网页分享功能_jquery代码实现多选、不同分享功能
查看>>
python登录面向对象_python基础 面向对象一
查看>>
人工智能建立本体库_基于本体技术的知识库构建设想
查看>>
python程序设计教程胡建华_Python程序设计教程
查看>>
仓库温度湿度控制措施_仓库温度、湿度控制管理制度(1)
查看>>
linux下定时调度shell脚本_Linux下使用shell脚本自动执行脚本文件 编辑shell定时脚本...
查看>>
erlang启动参数详解_Erlang启动参数详解
查看>>
mac php-frm xampp_如何在Mac中使用shell_exec xampp php
查看>>
axure 导入元件库显示不出白框_猿型库:Axure小练习之自定义下拉框
查看>>
两个集合相减怎么算_你家使用的防火窗(耐火窗)质量合格吗?怎么判断好坏呢?...
查看>>
ue4加载本地图片_UE4引擎初始化原理详细讲解
查看>>
python整数作为条件_Python整数类型(int)详解
查看>>
pta简单实现x的n次方_c语言第二次作业pta..docx
查看>>
python导入规范_Python编程入门:如何规范的导入包和模块
查看>>
P2264 情书
查看>>