POJ 3258.River Hopscotch
来源:互联网 发布:手机mysql服务器 编辑:程序博客网 时间:2024/06/06 18:48
题目:http://poj.org/problem?id=3258
AC代码(C++):
#include <iostream>#include <algorithm>#include <stdio.h>#include <vector>#include <queue>#include <map>#include <math.h>#include <string>#include <string.h>#include <bitset>#define INF 0x7fffffff#define MAXN 100105using namespace std;struct cmp1 { bool operator ()(int x, int y) { return x > y; } };int l,n,m;int low,high,mid;int a[50010];bool isBigger(){int cnt = 0;int last = 0;for(int i = 1; i <= n + 1; i++){if(a[i]-a[last]<mid)cnt++;else last = i;}if(cnt>m)return true;else return false;}int main(){priority_queue<int, vector<int>, cmp1>q;cin>>l>>n>>m;low = INF;high = 0;a[0] = 0;a[n + 1] = l;int tmp;for(int i = 1; i <= n; i++){scanf("%d",&tmp);q.push(tmp);}for(int i = 1; i <= n; i++){a[i] = q.top();q.pop();if(a[i]-a[i-1]>high)high = a[i]-a[i-1];if(a[i]-a[i-1]<low)low = a[i]-a[i-1];}if(a[n+1]-a[n]>high)high = a[n+1]-a[n];if(a[n+1]-a[n]<low)low = a[n+1]-a[n];mid = (low+high)/2;while(low<=high){if(isBigger())high = mid - 1;else low = mid + 1;mid = (low+high)/2;}cout<<mid;}总结: 二分搜索. 注意上下界.
阅读全文
0 0
- POJ 3258.River Hopscotch
- poj 3258 River Hopscotch
- Dichotomy poj 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
- Synchronized和ReentrantLock的区别
- LInux4_进程
- 基于redis的分布式锁
- 【Scikit-Learn 中文文档】处理文本数据
- linux之间文件传输scp
- POJ 3258.River Hopscotch
- Go日记——手写一个资源池
- 51nod 1195 斐波那契数列的循环节【斐波那契数列&&二次剩余&&欧拉判定准则】
- java中使用Jedis操作Redis实例
- HDU P1004 Let the Balloon Rise
- LightCNN C++接口抽取人脸特征
- Spark Metrics配置详解
- 【拜小白opencv】44-灰度直方图(一维直方图)calcHist()函数、minMaxLoc()函数、normalize()函数
- faster-rcnn tensorflow windows demo运行