POJ 3258(二分)
来源:互联网 发布:遥感数据 分类 建模 编辑:程序博客网 时间:2024/06/06 18:46
题目链接:http://poj.org/problem?id=3258
今天做了几个二分的题,感觉代码都差不多,但是每题都会纠结一会临界值的问题。
这道题已经纠结了不知道多久。
枚举可以跳的距离mid,用cnt计数当前mid情况下所可以去掉的石头数。
如果cnt>m,说明当前mid偏大,枚举mid-1,即high=mid-1
如果cnt<m,很明显当前mid偏小,枚举mid+1,即low=mid+1
关键在于cnt=m的时候,这时候mid满足题意,但是这只是符合题意的一种情况。题目要求的是最小距离的最大值,也就说,mid应继续增大,此时low=mid+1;
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>using namespace std;const int INF=0x3f3f3f3f;const int maxn=50010;int L,n,m;int d[maxn];int main(){#ifndef ONLINE_JUDGE freopen("test.in","r",stdin); freopen("test.out","w",stdout);#endifwhile(~scanf("%d%d%d",&L,&n,&m)){int low=0,high=L,mid;d[0]=0;d[n+1]=L;for(int i=1;i<=n;i++){scanf("%d",&d[i]);}sort(d,d+(n+2));int cnt,index;while(low<=high){mid=(low+high)>>1;cnt=0,index=0;for(int i=1;i<=n+1;i++){if(mid>=d[i]-d[index])cnt++;elseindex=i;}if(cnt<=m){low=mid+1;}else{high=mid-1;}}printf("%d\n",low);}return 0;}
0 0
- POJ 3258(二分)
- POJ 3258 (二分)
- 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 3258River Hopscotch(二分计算)
- poj 3258河石(二分的妙用)
- POJ 3258 River Hopscotch(二分)
- poj 3258 River Hopscotch(二分)
- android 手机设备唯一标识(2)
- RTX系统内核事件重复触发
- androidd 开源控件的积累
- scala线程demo-newFixedThreadPool
- Android中CursorLoader的使用、原理及注意事项
- POJ 3258(二分)
- 数据结构基础(16) --树与二叉树
- 手把手教你用CAB发布OCX的简单办法
- java project 使用ant工具打包
- 为什么Facebook要将视频从Flash全面迁移到HTML5?
- 移动web ios
- HDOJ 1398 Square Coins(母函数—整数拆分模板题)
- java并发编程:线程池的使用
- LODOP横向打印预览正向显示