zoukankan      html  css  js  c++  java
  • BZOJ_3477_[Usaco2014 Mar]Sabotage_二分答案

    BZOJ_3477_[Usaco2014 Mar]Sabotage_二分答案

    题意:

    约翰的牧场里有 N 台机器,第 i 台机器的工作能力为 Ai。保罗阴谋破坏一些机器,使得约翰的工作效率变低。保罗可以任意选取一段编号连续的机器,使它们停止工作。但这样的破次,而且保罗无法破坏第一台或最后一台机器。请问他该破坏哪些机器才能让剩下机器的工作效率的平均数最小?为了显示存在感,保罗至少必须破坏一台机器。

    分析:

    二分出答案k,将a[i]-k,求出2到n-1最大子段和mx。用sum-mx既是剩下的前一段后一段的和。如果小于0则是合法的。

    代码:

    #include <stdio.h>
    #include <string.h>
    #include <algorithm>
    using namespace std;
    #define N 100050
    #define du double 
    int a[N],n;
    du sum;
    bool check(du x)
    {
        du ans=-100000,f=-100000;
        for(int i=2;i<n;i++)
        {
            du now=a[i]-x;
            f=max(now,f+now);
            ans=max(ans,f);
        }
        if(sum-x*n-ans<=0)return 1;
        return 0;
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
            sum+=a[i];
        }
        du l=0,r=1000000;
        for(int i=1;i<=60;i++)
        {
            du mid=(l+r)*0.5;
            if(check(mid))r=mid;
            else l=mid; 
        }
        printf("%.3lf",l);
    }
    
  • 相关阅读:
    凸松弛技术解密
    机器学习中的逻辑回归模型简介
    机器学习中的损失函数
    逻辑回归的MATLAB实现(二分类问题)
    Lua和C++交互详细总结【转载】
    微擎手机端上传视频(图片)
    IOS开发:UIAlertView使用
    高度自适应问题
    css样式问题
    browser-sync
  • 原文地址:https://www.cnblogs.com/suika/p/8436678.html
Copyright © 2011-2022 走看看