POJ 3258 River Hopscotch
2014-09-16 20:23
211 查看
http://poj.org/problem?id=3258
二分两个石头间的距离作为答案,如果符合条件向左进行寻找最大化的最小值,如果不符合向右,如此反复。
AC_CODE:
http://poj.org/problem?id=3258
二分两个石头间的距离作为答案,如果符合条件向左进行寻找最大化的最小值,如果不符合向右,如此反复。
AC_CODE:
#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> using namespace std; const int MAX = 50010; int a[MAX],ans,l,n,m; bool check(int mid){ int last = 0,cnt = 0;//last记录上一个没有被删除的石头的id for(int i=1; i<=n+1; i++){ if(a[i] - a[last] < mid) cnt++;//如果石头之间的距离小于我们的答案,那么将这个石头删除 else last = i;//否则i就是没有被删除的石头标号,用last记录下来 } return cnt <= m; } int main(){ // freopen("in.txt", "r", stdin); scanf("%d%d%d",&l,&n,&m); for(int i=1; i<=n; i++) scanf("%d",&a[i]); a[n+1] = l; sort(a+1, a+1+n); int left = 0, right = l; while(left <= right){//二分枚举答案过程 int mid = (left + right) >> 1; if(check(mid)){ ans = mid; left = mid + 1; } else right = mid - 1; } printf("%d\n",ans); return 0; }
相关文章推荐
- poj 3258 River Hopscotch
- POJ 3258 River Hopscotch
- poj 3258 River Hopscotch
- POJ 3258 -- River Hopscotch(二分)
- poj 3258 River Hopscotch 【二分查找】(The Frog's Games 相似题)
- POJ 3258 River Hopscotch (二分,最大化最小值)
- poj--3258 River Hopscotch(最大化最小值)
- (Relax 数论1.21)POJ 3258 River Hopscotch
- POJ 3258 River Hopscotch(二分·最小距离最大)
- poj 3258 River Hopscotch(二分法,最小值最大化)
- POJ 3258 River Hopscotch
- POJ 3258 - River Hopscotch(二分搜索)
- POJ-3258-River Hopscotch
- POJ3258——River Hopscotch(二分)
- POJ - 3258 River Hopscotch
- POJ 3258 - River Hopscotch
- poj 3258 River Hopscotch(二分法,最小值最大化)
- POJ 3258 River Hopscotch(最大化最小值)
- POJ-3258 River Hopscotch
- poj 3258 River Hopscotch