poj 3258 River Hopscotch 二分搜索
2014-08-17 00:03
351 查看
题目链接:poj 3258
在长度为l的河中,有n块石头,问在移除m块石头的基础上,每一步跳跃的最小值的最大值为多少
二分答案,然后判断是否满足条件即可
在长度为l的河中,有n块石头,问在移除m块石头的基础上,每一步跳跃的最小值的最大值为多少
二分答案,然后判断是否满足条件即可
/****************************************************** * File Name: 3258.cpp * Author: kojimai * Creater Time:2014年08月16日 星期六 23时37分26秒 ******************************************************/ #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<iostream> using namespace std; #define FFF 50005 int a[FFF]; int n,m; bool judge(int x) { int now=0,cnt=0; for(int i=1;i<=n+1;i++) { if(now+a[i]-a[i-1]<x) { cnt++; now+=a[i]-a[i-1]; } else { now=0; } } if(cnt>m) return false; else return true; } int solve(int ll,int rr) { int mid; while(ll<=rr) { mid=(ll+rr)/2; if(judge(mid)) ll=mid+1; else rr=mid-1; } return rr; } int main() { int l; scanf("%d%d%d",&l,&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]); a[n+1]=l; a[0]=0; sort(a,a+n+1); int rr=l,ll=a[1]; for(int i=2;i<=n+1;i++) { if(ll>a[i]-a[i-1]) { ll=a[i]-a[i-1]; } } cout<<solve(ll,rr)<<endl; return 0; }
相关文章推荐
- POJ_3258_River Hopscotch_二分搜索
- poj 3258 River Hopscotch 二分搜索极值
- POJ - 3258/USACO - Dec06 Silver/NOIP 2015 - 提高组 River Hopscotch 贪心+二分搜索
- POJ 3258 River Hopscotch 二分搜索
- poj 3258 River Hopscotch 二分搜索
- POJ 3258 River Hopscotch【二分搜索】
- POJ 3258 River Hopscotch【二分:最大化最小值】
- POJ River Hopscotch 二分搜索
- 【POJ】3258 - River Hopscotch 二分->最大化最小值
- POJ 3258 River Hopscotch 二分答案
- POJ_3258_River_Hopscotch_[NOIP2015]_(二分,最大化最小值)
- poj River Hopscotch 3258 (二分)好题
- POJ 3258 River Hopscotch 二分查找
- poj 3258 River Hopscotch 【二分】
- POJ 3258 River Hopscotch 二分
- POJ 3258 River Hopscotch 解题报告(二分)
- POJ 3258 River Hopscotch<二分>
- River Hopscotch POJ - 3258 (二分求最小值)
- Poj3258 River Hopscotch 二分
- River Hopscotch POJ - 3258 (二分)