poj 3258 River Hopscotch
2011-03-19 12:02
218 查看
二分搜索。
删除的rock越多,那个最小间距越大,极限是L
删除的rock越少,那个最小间距越小,极限是初始的最小间距
而对于边界的确定,确实比较麻烦,我是找了几组数据,找到了共同的特性,证明却不会
删除的rock越多,那个最小间距越大,极限是L
删除的rock越少,那个最小间距越小,极限是初始的最小间距
而对于边界的确定,确实比较麻烦,我是找了几组数据,找到了共同的特性,证明却不会
#include<iostream> #include<cstdlib> using namespace std; #define inf 1000000005 #define N 50005 int a ; int cmp(const void *b,const void *c) { return *(int *)b-*(int *)c; } int bin_search(int l,int r,int n,int m) { int left=l,right=r,mid,last,cnt,i; while(left<=right) { mid=(left+right)/2; last=a[0],cnt=0; for(i=1;i<=n;i++) { if(a[i]-last>=mid) last=a[i]; else cnt++; } if(cnt<=m) left=mid+1; else right=mid-1; } return right; } int main() { int d,n,m,i,l; while(scanf("%d%d%d",&d,&n,&m)!=EOF) { l=inf; a[0]=0,a[n+1]=d; for(i=1;i<=n;i++) { scanf("%d",a+i); if(a[i]-a[i-1]<l) l=a[i]-a[i-1]; } if(a[n+1]-a <l) l=a[n+1]-a ; qsort(a+1,n,sizeof(a[1]),cmp); printf("%d/n",bin_search(l,d,n,m)); } return 0; }
相关文章推荐
- POJ 3258 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(二分)
- poj 3258 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(二分搜索)
- poj 3258 River Hopscotch(二分+贪心)
- poj 3258 River Hopscotch(二分法,最小值最大化)
- 【poj 3258】 River Hopscotch
- poj 3258 River Hopscotch(二分最大化最小值)
- POJ-3258-River Hopscotch(二分+贪心)
- POJ - 3258: River Hopscotch