zoukankan      html  css  js  c++  java
  • poj 2456 Aggressive cows 二分 题解《挑战程序设计竞赛》

    地址 http://poj.org/problem?id=2456

     解法 

    使用二分逐个尝试间隔距离 能否满足要求 

    检验是否满足要求的函数 使用的思想是贪心 第一个点放一头牛 后面大于等于尝试的距离才放置一头牛 如果能放置完所有的牛 那么就继续增加尝试的距离 否则就减少尝试的距离

    代码

     1 #include <iostream>
     2 #include <vector>
     3 #include <math.h>
     4 #include <algorithm>
     5 
     6 
     7 using namespace std;
     8 
     9 /*
    10 Sample Input
    11 5 3
    12 1
    13 2
    14 8
    15 4
    16 9
    17 Sample Output
    18 3
    19 */
    20 
    21 
    22 vector<int> v;
    23 
    24 int n, m;
    25 
    26 
    27 bool check(int d)
    28 {
    29     int mm=m-1;
    30 
    31     int lastselect = v[0];
    32 
    33     for (int i = 1; i < n; i++) {
    34         if (v[i] - lastselect >= d) {
    35             mm--;
    36             lastselect = v[i];
    37             if (mm == 0)
    38                 return false;
    39         }
    40     }
    41 
    42     return true;
    43 }
    44 
    45 
    46 
    47 
    48 int main()
    49 {
    50     cin >> n >> m;
    51 
    52     for (int i = 0; i < n; i++) {
    53         int t; cin >> t;
    54         v.push_back(t);
    55     }
    56     if (m == 1) {
    57         printf("0
    ");
    58         return 0;
    59     }
    60 
    61     sort(v.begin(), v.end());
    62 
    63     //距离的极端取值k
    64     int l = 0; int r = v.back();
    65 
    66     while (l<r) {
    67         int mid = l + r >> 1;
    68         if (check(mid)) r = mid;
    69         else {
    70             l = mid + 1;
    71         }
    72     }
    73 
    74     cout << r-1 << endl;
    75 
    76     return 0;
    77 }
    View Code
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    Java Web开发 之VO、PO、DTO等收集
    Hive的安装与使用
    各种默认回车提交表单
    A/B Problem
    A+B Problem II
    A+B Problem IV
    关于521
    劝你别做
    无主之地1
    A+B Problem(V)
  • 原文地址:https://www.cnblogs.com/itdef/p/12028931.html
Copyright © 2011-2022 走看看