lanqiao OJ 364 跳石头

简介: lanqiao OJ 364 跳石头

1.跳石头 - 蓝桥云课 (lanqiao.cn)

这道题可以用二分来解决,我们二分最短的跳跃距离,把每一个跳跃距离进行,判断在这种条约距离下,我们能够移走的石头,来和我们组委会给的石头数进行对比,最后得到一个最合适的长度;

#include<iostream>
#include<cstring>
#include<algorithm>
 
using namespace std ;
const int N = 5e4 +10 ;
int len , n , m;
int a[N] ;
 
bool check(int x){
  int num = 0 , pos = 0 ;
  for(int i = 1 ; i <= n ; i ++){//挨个判断,如果有a[i] 减去上一个不能移走的石头的距离,
    if((a[i] - pos) < x) num ++ ;   //如果小于我们的跳跃距离就移走这个石头 num ++
    else pos = a[i] ;//如果大于等于,那我们就不能移走这个石头
  }
  if(num <= m) return true ;
  else return false ;
}
int main(){
  cin >> len >> n >> m;
  for(int i = 1 ; i <= n ; i ++){
    cin >> a[i] ;
  }
  int l = 0  , r = len ;
  while(l < r){//二分找跳跃距离
    int mid = (l+r+1) >> 1 ;
    if(check(mid)) l = mid ;
    else r = mid - 1 ;
  }
  cout << l << endl ;
  return 0;
}
相关文章
lanqiao OJ 525 传球游戏
lanqiao OJ 525 传球游戏
lanqiao OJ 22年省赛 扫雷
lanqiao OJ 22年省赛 扫雷
lanqiao OJ 649 算式900
lanqiao OJ 649 算式900
lanqiao OJ 3513 岛屿个数(2023省赛)
lanqiao OJ 3513 岛屿个数(2023省赛)
lanqiao OJ 99 分巧克力
lanqiao OJ 99 分巧克力
lanqiao OJ 664 方格填数
lanqiao OJ 664 方格填数
lanqiao OJ 229 迷宫与陷阱
lanqiao OJ 229 迷宫与陷阱
lanqiao OJ 102 青蛙跳杯子
lanqiao OJ 102 青蛙跳杯子