zoukankan      html  css  js  c++  java
  • Divide and conquer:Aggressive Cows(POJ 2456)

                    

                    侵略性的牛

      题目大意:C头牛最大化他们的最短距离

      常规题,二分法即可

      

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <functional>
     4 
     5 using namespace std;
     6 
     7 static int pos[100000];
     8 
     9 bool judge(const int, const int,const int);
    10 void solve(const int, const int);
    11 
    12 int main(void)
    13 {
    14     int n, c;
    15     while (~scanf("%d%d", &n, &c))
    16     {
    17         for (int i = 0; i < n; i++)
    18             scanf("%d", &pos[i]);
    19         sort(pos, pos + n);
    20         solve(n, c);
    21     }
    22     return 0;
    23 }
    24 
    25 void solve(const int n, const int c)
    26 {
    27     int lb = 0, rb = 1000000001, mid;
    28 
    29     while (rb - lb > 1)
    30     {
    31         mid = (rb + lb) / 2;
    32         if (judge(mid, c, n)) lb = mid;
    33         else rb = mid;
    34     }
    35     printf("%d
    ", lb);
    36 }
    37 
    38 bool judge(const int dist, const int cows_sum, const int n)
    39 {
    40     int last_pos = 0, cnt;
    41     
    42     for (int i = 1; i < cows_sum; i++)
    43     {
    44         cnt = last_pos + 1;
    45         while (cnt < n && pos[cnt] - pos[last_pos] < dist)
    46             cnt++;
    47         if (cnt == n)
    48             return false;
    49         last_pos = cnt;
    50     }
    51     return true;
    52 }

     

  • 相关阅读:
    Day10
    Day9
    Day8
    Day7
    Day 6
    Day5
    第一周计划
    事件总线模式辨析
    解释器模式辨析
    解释器模式深度探究
  • 原文地址:https://www.cnblogs.com/Philip-Tell-Truth/p/5128990.html
Copyright © 2011-2022 走看看