标签: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