• poj2018 Best Cow Fences


    Best Cow Fences
    Time Limit: 1000MS   Memory Limit: 30000K
    Total Submissions: 15533   Accepted: 4995

    Description

    Farmer John's farm consists of a long row of N (1 <= N <= 100,000)fields. Each field contains a certain number of cows, 1 <= ncows <= 2000.

    FJ wants to build a fence around a contiguous group of these fields in order to maximize the average number of cows per field within that block. The block must contain at least F (1 <= F <= N) fields, where F given as input.

    Calculate the fence placement that maximizes the average, given the constraint.

    Input

    * Line 1: Two space-separated integers, N and F.

    * Lines 2..N+1: Each line contains a single integer, the number of cows in a field. Line 2 gives the number of cows in field 1,line 3 gives the number in field 2, and so on.

    Output

    * Line 1: A single integer that is 1000 times the maximal average.Do not perform rounding, just print the integer that is 1000*ncows/nfields.

    Sample Input

    10 6
    6 
    4
    2
    10
    3
    8
    5
    9
    4
    1
    

    Sample Output

    6500
    

    Source

    解析:二分法

    求每一项与均值的差,如果差之和大于等于0,这说明均值满足条件,找到最大的满足条件的均值即可。

    #include<iostream>
    #include<cstdio>
    using namespace std;
    const int maxn=100010;
    int n,f;
    double a[maxn],b[maxn],sum[maxn],maxx[maxn];
    int check(double mid){
        for(int i=1;i<=n;i++){
            sum[i]=sum[i-1]+a[i]-mid;
        }
        double mintemp=0x3f3f3f3f;
        for(int j=f;j<=n;j++){
            mintemp=min(mintemp,sum[j-f]);//1~j-f最小的那个和
            if(sum[j]-mintemp>=0)return true;
        }
        return false;
    }
    int main(){
        cin>>n>>f;
        for(int i=1;i<=n;i++) cin>>a[i];
        double l=0,r=2000,mid;
        for(int i=1;i<=40;i++){
            mid=(l+r)/2;
            if(check(mid))l=mid;
            else r=mid;
        }
        cout << int(r * 1000);//如果把r该位l会WR 
    //    printf("%.0lf",r*1000);//四舍五入,而牛只能向下取整 
        return 0;
        
    }
  • 相关阅读:
    数字三角形W(加强版) codevs 2189
    数字三角形W(加强版) codevs 2189
    线段树模板
    树状数组模板 洛谷3374
    洛谷 2327 [SCOI2005]扫雷
    洛谷 2327 [SCOI2005]扫雷
    洛谷1144 最短路计数
    洛谷1144 最短路计数
    洛谷1346 电车
    洛谷1346 电车
  • 原文地址:https://www.cnblogs.com/ssfzmfy/p/10987267.html
Copyright © 2020-2023  润新知