二分搜索 POJ 3258 River Hopscotch

题目传送门

 1 /*
 2     二分:搜索距离,判断时距离小于d的石头拿掉
 3 */
 4 #include <cstdio>
 5 #include <algorithm>
 6 #include <cstring>
 7 #include <cmath>
 8 using namespace std;
 9
10 typedef long long ll;
11 const int MAXN = 5e4 + 10;
12 const int INF = 0x3f3f3f3f;
13 ll a[MAXN];
14 int n, m;
15
16 bool check(ll d)    {
17     int last = 0;  int cnt = 0;
18     for (int i=1; i<=n+1; ++i)  {
19         if (a[i] - a[last] <= d)    cnt++;
20         else    last = i;
21     }
22     return cnt > m;
23 }
24
25 int main(void)  {       //POJ 3258 River Hopscotch
26     //freopen ("POJ_3258.in", "r", stdin);
27
28     ll x;
29     while (scanf ("%I64d%d%d", &x, &n, &m) == 3)    {
30         a[0] = 0;   a[n+1] = x;
31         for (int i=1; i<=n; ++i)    {
32             scanf ("%I64d", &a[i]);
33         }
34
35         sort (a, a+n+2);    ll l = 0, r = a[n+1];
36         while (l <= r)   {
37             ll mid = (l + r) >> 1;
38             if (check (mid))    r = mid - 1;
39             else    l = mid + 1;
40         }
41         printf ("%I64d\n", l);
42     }
43
44     return 0;
45 }
时间: 2024-10-14 07:49:51

二分搜索 POJ 3258 River Hopscotch的相关文章

POJ 3258 River Hopscotch 经典二分

点击打开链接 River Hopscotch Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6189   Accepted: 2683 Description Every year the cows hold an event featuring a peculiar version of hopscotch that involves carefully jumping from rock to rock in a r

POJ 3258 River Hopscotch 二分答案

River Hopscotch Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6193   Accepted: 2685 Description Every year the cows hold an event featuring a peculiar version of hopscotch that involves carefully jumping from rock to rock in a river. T

poj 3258 River Hopscotch 【二分】

题目真是不好读,大意如下(知道题意就很好解了) 大致题意: 一条河长度为 L,河的起点(Start)和终点(End)分别有2块石头,S到E的距离就是L. 河中有n块石头,每块石头到S都有唯一的距离 问现在要移除m块石头(S和E除外),每次移除的是与当前最短距离相关联的石头,要求移除m块石头后,使得那时的最短距离尽可能大,输出那个最短距离. //Memory Time //420K 391MS #include<iostream> #include<algorithm> using

POJ 3258 River Hopscotch

River Hopscotch Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 11031   Accepted: 4737 Description Every year the cows hold an event featuring a peculiar version of hopscotch that involves carefully jumping from rock to rock in a river.

poj 3258 River Hopscotch 题解

[题意] 牛要到河对岸,在与河岸垂直的一条线上,河中有N块石头,给定河岸宽度L,以及每一块石头离牛所在河岸的距离, 现在去掉M块石头,要求去掉M块石头后,剩下的石头之间以及石头与河岸的最小距离的最大值. [解法] 用二分做,但是开始写了三个版本的二分,全都wa. 无赖看了别人的二分,还是不理解,为什么他们写的就能过. 反复思索后,终于明白了:关键在于题目求的是什么. 做题思想:二分所求的最小距离的最大值mid,记录可以去掉的石头块数cnt(注意:当相邻的石头的距离小于等于mid,就可以去掉),

POJ 3258 River Hopscotch (二分)

题目地址:POJ 3258 水题.二分距离,判断是否可行.需要注意的是最后一个,因为最后一个是没法移除的,所以还要倒着判断一下. 代码如下: #include <iostream> #include <string.h> #include <math.h> #include <queue> #include <algorithm> #include <stdlib.h> #include <map> #include &l

[ACM] POJ 3258 River Hopscotch (二分,最大化最小值)

River Hopscotch Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6697   Accepted: 2893 Description Every year the cows hold an event featuring a peculiar version of hopscotch that involves carefully jumping from rock to rock in a river. T

POJ 3258 River Hopscotch(二分 跳河)

Language: Default River Hopscotch Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7990   Accepted: 3438 Description Every year the cows hold an event featuring a peculiar version of hopscotch that involves carefully jumping from rock to

POJ 3258 River Hopscotch(二分)

River Hopscotch Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8975   Accepted: 3859 Description Every year the cows hold an event featuring a peculiar version of hopscotch that involves carefully jumping from rock to rock in a river. T