zoukankan      html  css  js  c++  java
  • Codeforces Round #320 (Div. 1) [Bayan Thanks-Round] C A Weakness and Poorness (三分)

    显然f(x)是个凹函数,三分即可,计算方案的时候dp一下。eps取大了会挂精度,指定循环次数才是正解。

    #include<bits/stdc++.h>
    
    using namespace std;
    const double eps = 1e-11;
    const int maxn = 2e5+5;
    double a[maxn];
    double d1[maxn],d2[maxn];
    int n;
    inline double cal(double x)
    {
        double a1 = 0., a2 = 0.;
        for(int i = 1; i <= n; i++){
            d1[i] = max(0.,d1[i-1])+a[i]-x;
            a1 = max(a1,d1[i]);
            d2[i] = min(0.,d2[i-1])+a[i]-x;
            a2 = min(a2,d2[i]);
        }
        return max(fabs(a1),fabs(a2));
    }
    
    int main()
    {
        //freopen("in.txt","r",stdin);
        scanf("%d",&n);
        for(int i = 1; i <= n; i++) scanf("%lf",a+i);
        double L = -1e4, R = 1e4;
        double M1v,M2v;
        while(R-L>eps){
            double M1 = L+(R-L)/3, M2 = L+(R-L)/3*2;
            M1v = cal(M1), M2v = cal(M2);
            if(abs(M1v-M2v)<eps){
                L = M1; R = M2;
            }else {
                if(M1v > M2v){
                    L = M1;
                }else {
                    R = M2;
                }
            }
        }
        printf("%.15lf",(cal(L)+cal(R))/2);
        return 0;
    }
  • 相关阅读:
    Servlet CDI Example Analysis
    JSON续
    JSON
    Ubuntu 下安装 MySQL
    Filter介绍
    Annotation相关
    Container、Injection
    Java buildTools
    Http协议
    URI URL URN 的区别
  • 原文地址:https://www.cnblogs.com/jerryRey/p/4815416.html
Copyright © 2011-2022 走看看