zoukankan      html  css  js  c++  java
  • POJ 3258 River Hopscotch 二分查找

    题意:一条长为l(1~1,000,000,000)的河中,有n(1~50,000)块可垫脚的石头(不包括起始点和终点的),给出它们与起始点的距离rock[i],现在要你移除其中的m块,使得具有最小间距的相邻两块石头之间的距离最大。

    View Code
     1 #include <stdio.h>
     2 #include <iostream>
     3 #include <algorithm>
     4 using namespace std;
     5 int cmp(const int &a,const int &b)
     6 {
     7     return a<b;
     8 }
     9 int m,n,l;
    10 int rock[50005];
    11 int dis[50005];
    12 int judge(int mid)
    13 {
    14     int i;
    15     int len;
    16     int num;
    17     num = len = 0;
    18     for(i = 1;i <= n+1;i++)
    19     {
    20         if(len+dis[i] <= mid)
    21         len+=dis[i],num++;
    22         else
    23         len = 0;
    24     }
    25 
    26     if(num <= m)
    27     return 0;
    28     return 1;
    29 }
    30 int main()
    31 {
    32     int i;
    33     while(cin>>l>>n>>m)
    34     {
    35         rock[0] = 0,rock[n+1] = l;
    36         for(i = 1;i <= n;i++)
    37         cin>>rock[i];
    38         sort(rock+1,rock+n+1,cmp);
    39         int low,high;
    40         low = l;
    41         high = l;
    42         for(i = 1;i <= n+1;i++)
    43         {
    44             dis[i] = rock[i]-rock[i-1];
    45             if(low > dis[i])
    46             low = dis[i];
    47         }
    48 
    49         int mid = (high+low)/2;
    50 
    51         while(low <= high)
    52         {
    53             if(judge(mid))
    54             high = mid-1;
    55             else
    56             low = mid+1;
    57             mid = (low+high)/2;
    58         }
    59         cout<<low<<endl;
    60     }
    61     return 0;
    62 }
  • 相关阅读:
    LeetCode 275. H-Index II
    LeetCode 274. H-Index
    LeetCode Gray Code
    LeetCode 260. Single Number III
    LeetCode Word Pattern
    LeetCode Nim Game
    LeetCode 128. Longest Consecutive Sequence
    LeetCode 208. Implement Trie (Prefix Tree)
    LeetCode 130. Surrounded Regions
    LeetCode 200. Number of Islands
  • 原文地址:https://www.cnblogs.com/0803yijia/p/2984934.html
Copyright © 2011-2022 走看看