标签:des style blog http color os io for
6 1 2 2 25 3 3 11 2 18
4 11
题目大意:
解题思路:长为L的河流,中间有n个石头,告诉你石头的位置,青蛙的跳跃能力至少为多少中途跳m次能跳过去?
解题代码:二分+贪心的题目,因为青蛙的跳跃能力越强需要的次数就越少,因此青蛙的跳跃能力有单调性,所以二分枚举青蛙的跳跃能力,在判断这个能力下是否能够跳过去,这个用贪心解决,每次在这个能力下尽可能跳到远的石头上,最后看m次是否跳到了对岸。
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
int L,n,m;
vector <int> v;
void input(){
int x;
v.clear();
v.push_back(0);
for(int i=0;i<n;i++){
scanf("%d",&x);
v.push_back(x);
}
v.push_back(L);
sort(v.begin(),v.end());
}
bool canJump(int dis){
int s=0,l=0,pos=0,vsize=v.size();
for(int i=0;i<m;i++){
while( l<vsize && v[l]<=s+dis){
pos=v[l];
l++;
}
s=pos;
}
if(s>=L) return true;
else return false;
}
void solve(){
int l=0,r=L;
while(l<r){
int mid=(l+r)/2;
if(canJump(mid)) r=mid;
else l=mid+1;
}
printf("%d\n",r);
}
int main(){
while(scanf("%d%d%d",&L,&n,&m)!=EOF){
input();
solve();
}
return 0;
}
HDU 4004 The Frog's Games(基本算法-贪心,搜索-二分),布布扣,bubuko.com
HDU 4004 The Frog's Games(基本算法-贪心,搜索-二分)
标签:des style blog http color os io for
原文地址:http://blog.csdn.net/a1061747415/article/details/38361895