P2672跳石头
这是2015noip的一道二分答案的题目,看了题解才会,,
题目给出石头的位置并且让你踩着石头往前跳,最多删掉m个石头还可以顺利通过,求解最短跳跃距离的最大值。
那么二分什么呢:mid为跳跃的长度。那么left=0,right=l进行二分.再拿s和now分别记录当前搬走的石头数量,判断是否可以跳过去(用类似前缀和的思想)。最后当前跳跃使得搬走的石头>=m,那么则让right=mid-1,如果搬走的<=m,那么就记录下当前的mid,left=mid+1。又因为题目说的是最小距离的最大值,那么最后找到的则是最大的。
1.明确什么题目可以用二分 eg.最大的最小,k优,关键量具有单调性,最小平均路。。
2.二分什么求解什么
3.怎么来改变二分的左右端点
4.仔细读题,看好至多至少等关键字,把逻辑搞清楚
#include<iostream>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<cstdio>
#define maxn 600000
using namespace std;
int m,n;
int l,d;
int left,right,mid;
int a[maxn];
int s,now;
int ans=;
int main(){
cin>>l>>n>>m;
for(int i=;i<=n;i++){
cin>>a[i];
}
int left=,right=l;
while(left<=right){//二分跳跃长度
mid=(left+right)/;
now=;//跳到第几个
s=;//搬了几个石头
for(int i=;i<=n;i++){
if(a[i]-a[now]<mid){//假如跳过去了
s++; //搬走
}
else{
now=i;
}
}
if(s<=m){
ans=mid;
left=mid+;
}
else right=mid-;
}
cout<<ans;
return ;
}
P2672跳石头的更多相关文章
- NOIP2015跳石头[二分答案]
题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选 择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N 块岩石( ...
- [NOIP2015] 提高组 洛谷P2678 跳石头
题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N 块岩石(不 ...
- NOIP2015 跳石头
一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N块岩石(不含起点和终点的岩石). ...
- NOIP 2015复赛提高组Day2 T1==Codevs 4768 跳石头
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中 ...
- UOJ #148. 【NOIP2015】跳石头 二分
#148. [NOIP2015]跳石头 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/148 Descripti ...
- c++二分答案 之 跳石头
题目: 题目描述 Description 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之 ...
- Codevs 4768 跳石头 NOIP2015 DAY2 T1
4768 跳石头 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 传送门 题目描述 Description 一年一度的"跳石头"比赛又要开始了! ...
- Vijos 1981 跳石头 二分
描述 一年一度的"跳石头"比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N 块岩 ...
- 洛谷 P2678 & [NOIP2015提高组] 跳石头
题目链接 https://www.luogu.org/problemnew/show/P2678 题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布 ...
随机推荐
- 2. ClustrixDB 文件/参数说明
一.日志/data/clustrix/log/query.log 记录节点慢SQL/错误SQL/DDL 等信息,节点分开记录 Each entry in the query.log is catego ...
- BeanPostProcessor和BeanFactoryPostProcessor的区别
官方文档: 在Spring核心的1.8章节 使用BeanPostProcessor自定义Bean BeanPostProcessor 接口定义了您可以实现的回调方法,以提供您自己的(或覆盖容器的默认) ...
- Mac item2常用快捷键
记录一下iterm 2 快捷键,用于备忘! 标签 新建标签:command + t 关闭标签:command + w 切换标签:command + 数字 command + 左右方向键 切换全屏:co ...
- 组件内导航之beforeRouteUpdate的使用
使用场景: 组件复用:路由跳转: beforeRouteUpdate (to, from, next) { // 在当前路由改变,但是该组件被复用时调用 // 举例来说,对于一个带有动态参数的路径 / ...
- Gridview中显示的值根据数据库中带出的值作更改
前台页面对Gridview增加事件 OnRowDataBound="GridView1_RowDataBound"protected void GridView1_RowDataB ...
- 一个Qt线程的例子,用于说明QWaitCondition的作用
描述可能比较麻烦,还是直接上代码吧! main.cpp #include <QApplication> #include "mainpage.h" int main ...
- docker部署Javaweb项目(jdk+tomcat+mysql)
步骤一:在主机下载安装docker,参照Centos7上安装docker 步骤二:下载Linux版本的JDK1.6和Tomcat6.0(其他项目若依赖其他版本的运行环境可选择另外版本下载),通过sec ...
- IDEA 中常用快捷键的使用
IDEA 中快捷键的使用 1:知道类名全局查找类: Ctrl+Shift+Alt+N; 全局搜索: Ctrl+Shift+R 2:快速定位到类的文件夹: 3: 优化导入的类和包 (删除 ...
- python使用内置方法和修饰器方法获取类名、函数名
1. 外部获取 从外部的情况好获取,可以使用指向函数的对象,然后用__name__属性. def a(): pass a.__name__ 或者 getattr(a,'__name__') 2. 内部 ...
- lambda表达式匿名函数
匿名函数是一个“内联”语句或表达式,可在需要委托类型的任何地方使用.可以使用匿名函数来初始化命名委托,或传递命名委托(而不是命名委托类型)作为方法参数. C# 中委托的发展 在 C# 1.0 中,您通 ...