POJ 3258 River Hopscotch (二分)
题目地址:POJ 3258
水题。二分距离,判断是否可行。需要注意的是最后一个,因为最后一个是没法移除的,所以还要倒着判断一下。
代码如下:
#include <iostream>
#include <string.h>
#include <math.h>
#include <queue>
#include <algorithm>
#include <stdlib.h>
#include <map>
#include <set>
#include <stdio.h>
using namespace std;
#define LL __int64
#define pi acos(-1.0)
const int mod=9901;
const int INF=0x3f3f3f3f;
const double eqs=1e-8;
int a[51000], vis[51000];
int bin_search(int n, int m)
{int low=0, high=1e9, mid, ans, cnt, last;while(low<=high) {mid=low+high>>1;int flag=0;cnt=0;last=0;memset(vis,0,sizeof(vis));for(int i=0; i<n; i++) {if(a[i]-last<mid) {cnt++;if(cnt>m)break;} else {last=a[i];vis[i]=1;}}for(int i=n-1;i>=0;i--){if(vis[i]){if(a[n]-vis[i]<mid){cnt++;if(cnt>m) break;}else break;}}if(cnt>m) high=mid-1;else{ans=mid;low=mid+1;}}return ans;
}
int main()
{int lenth, i, n, m, ans;scanf("%d%d%d",&lenth,&n,&m);for(i=0; i<n; i++) {scanf("%d",&a[i]);}if(!n) {printf("%d\n",lenth);return 0;}sort(a,a+n);a[n]=lenth;ans=bin_search(n,m);printf("%d\n",ans);return 0;
}
POJ 3258 River Hopscotch (二分)相关推荐
- poj 3258 River Hopscotch 二分答案
题目地址: http://poj.org/problem?id=3258 题目思路: 首先,如果只减少一部,那么一定要干掉最短的那段距离(一旦不消灭,最小的还是它,并没有达到使最小值取最大的理想情况) ...
- poj 3258 River Hopscotch 二分
1 /** 2 大意:给定n个点,删除其中的m个点,其中两点之间距离最小的最大值 3 思路: 二分最小值的最大值---〉t,若有距离小于t,则可以将前面的节点删除:若节点大于t,则继续往下查看 4 若 ...
- POJ 3258 River Hopscotch 二分
题意:奶牛们喜欢在河里的石头上玩跳房子游戏,每次从一个石头跳到另一个石头上.现在知道起点的石头,终点的石头,以及终点石头到起点石头的距离L.又知道起点-终点之间还有N个石头,每个石头到起点的距离记为r ...
- POJ 3258 River Hopscotch 经典二分
点击打开链接 River Hopscotch Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6189 Accepted: ...
- POJ 3258 -- River Hopscotch(二分)
题目链接 Description Every year the cows hold an event featuring a peculiar version of hopscotch that in ...
- poj 3258 River Hopscotch 【二分】
题目真是不好读,大意例如以下(知道题意就非常好解了) 大致题意: 一条河长度为 L,河的起点(Start)和终点(End)分别有2块石头,S到E的距离就是L. 河中有n块石头,每块石头到S都有唯一的距 ...
- POJ 3258 River Hopscotch(二分查找答案)
一个不错的二分,注释在代码里 #include <stdio.h> #include <cstring> #include <algorithm> #include ...
- poj 3258:River Hopscotch(二分)
题目链接 L为N+2块石子中最右边石子位置,0最左,M为可移除块数,求移除后相邻石子可达到的最大距离. #include<iostream> #include<cstdio> ...
- POJ - 3258 River Hopscotch(二分水题)
题目链接:点击查看 题目大意:给出n个石头,其位置排列在一个数轴上,起点为0,终点为ed(题目会给出),我们设两两石头之间的间距的最小值为ans,问在移走m块石头之后,ans的最大值是多少 题目分析: ...
最新文章
- android PhotoView的用法
- 4月机器学习热文出炉,这10篇文章你读了吗?
- ARM与RISC-V之争,后起之秀的优势在哪儿?
- 20 ubuntu 中科大源_Linux-Ubuntu简单配置-换国内源-中文显示
- 软件重构过程中的思维转换: 遗留代码如何变废为宝
- 力扣 136. 只出现一次的数字 【异或运算】
- java编程语言大全_JAVA编程语言的基础知识(一)
- python超神之路:创建对象的9种方法
- java 悬浮提示框_表格(悬浮框提示)
- 信息学奥赛一本通(1025:保留12位小数的浮点数)
- JS与Jquery的事件委托机制
- 纯CSS实现鼠标滑过缩略图放大显示代码
- [导入]agtweener.zip(673.46 KB)
- 数值线性代数徐树方pdf_MIT线性代数4-8:矩阵分解,向量空间,列空间和零空间,线性方程组求解...
- like语法 mysql_mysql中like语法拼接4种方式
- (转)TeamViewer三种许可证的区别是什么?
- SQLSERVER不借助代理:本地备份、异地备份
- 浏览器去除烦人的黑白滤镜
- IPCamera WiFi配置方案
- 怎么从主机拷贝文件到虚拟机