zoukankan      html  css  js  c++  java
  • 疯牛-- Aggressive cows (二分)

    疯牛

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:4
     
    描述
    农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间依次编号为x1,...,xN (0 <= xi <= 1,000,000,000).
    但是,John的C (2 <= C <= N)头牛们并不喜欢这种布局,而且几头牛放在一个隔间里,他们就要发生争斗。为了不让牛互相伤害。John决定自己给牛分配隔间,使任意两头牛之间的最小距离尽可能的大,那么,这个最大的最小距离是什么呢?
     
    输入
    有多组测试数据,以EOF结束。 第一行:空格分隔的两个整数N和C 第二行——第N+1行:分别指出了xi的位置
    输出
    每组测试数据输出一个整数,满足题意的最大的最小值,注意换行。
    样例输入
    5 3
    1
    2
    8
    4
    9
    样例输出
    3
    题解:二分;
    代码:
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<algorithm>
     6 using namespace std;
     7 typedef long long LL;
     8 const int MAXN=1e5+100;
     9 int m[MAXN];
    10 int N,C;
    11 bool js(int x){
    12     int t=m[0];
    13     int cnt=1;
    14     for(int i=1;i<N;i++){
    15         if(m[i]-t>=x)cnt++,t=m[i];
    16     }
    17     if(cnt>=C)return true;
    18     else return false;
    19 }
    20 int erfen(int l,int r){
    21     int mid;
    22     while(l<=r){
    23         mid=(l+r)/2;
    24         if(js(mid))l=mid+1;
    25         else r=mid-1;
    26     }
    27     return l;
    28 }
    29 int main(){
    30     while(~scanf("%d%d",&N,&C)){
    31         for(int i=0;i<N;i++)scanf("%d",m+i);
    32         sort(m,m+N);
    33         printf("%d
    ",erfen(0,m[N-1]-m[0])-1);//不明觉厉
    34 } 35 return 0; 36 }
    Aggressive cows
    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 9080   Accepted: 4512

    Description

    Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are located along a straight line at positions x1,...,xN (0 <= xi <= 1,000,000,000). 
    His C (2 <= C <= N) cows don't like this barn layout and become aggressive towards each other once put into a stall. To prevent the cows from hurting each other, FJ want to assign the cows to the stalls, such that the minimum distance between any two of them is as large as possible. What is the largest minimum distance?

    Input

    * Line 1: Two space-separated integers: N and C 
    * Lines 2..N+1: Line i+1 contains an integer stall location, xi

    Output

    * Line 1: One integer: the largest minimum distance

    Sample Input

    5 3
    1
    2
    8
    4
    9

    Sample Output

    3

    Hint

    OUTPUT DETAILS: 
    FJ can put his 3 cows in the stalls at positions 1, 4 and 8, resulting in a minimum distance of 3. 
    Huge input data,scanf is recommended.
  • 相关阅读:
    【PowerDesigner】【2】将工具栏显示出来
    【PowerDesigner】【1】简单介绍
    【服务器】【Windows】【4】删除Windows系统中不想要的服务
    【Java】【8】StringUtils中isNotEmpty和isNotBlank的区别
    【Java】【7】枚举类
    hdu 1285
    Codeforces Round #198 (Div. 2) —— D
    Codeforces Round #198 (Div. 2) —— C
    Codeforces Round #198 (Div. 2) —— B
    Codeforces Round #198 (Div. 2) —— A
  • 原文地址:https://www.cnblogs.com/handsomecui/p/4963431.html
Copyright © 2011-2022 走看看