zoukankan      html  css  js  c++  java
  • hdu5073 贪心

    这题说的是给了 n个值每个值 然后 他们的品均值 作为中点 然后每个点到中点的均值的平方 和最小值是多少

    有 k 个点可以重新 放过位置 , 这样我们 应该 会选 最近的那个 n-k个点 然后 取他们的均值点  这样我们只要先排序 排完后 直接 遍历过去

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    using namespace std;
    const int maxn = 50005;
    double A[maxn];
    int main()
    {
        int cas;
        scanf("%d",&cas);
        for(int cc=1; cc<=cas; ++cc){
             int n,k;
             scanf("%d%d",&n,&k);
             for(int i=0; i<n; ++i)
                 scanf("%lf",&A[i]);
             sort(A,A+n);
             double square=0,dec=0,x=0;
             if(n==k){
                 printf("0
    "); continue;
             }
             int sz=n-k;
    
             for(int i=0; i<sz; ++i){
                 square+= A[i]*A[i];
                 dec+=2*A[i];
                 x+=A[i];
             }
             double loc=x/sz;
             double ans = -dec*loc + square + loc*loc*sz;
             for(int i=sz; i<n; ++i){
                 square-=A[i-sz]*A[i-sz];
                 square+=A[i]*A[i];
                  dec-=2*A[i-sz];
                  dec+=2*A[i];
                  x-=A[i-sz];
                  x+=A[i];
                  loc=x/sz;
                 ans=min(ans,-dec*loc + square + loc*loc*sz);
             }
             printf("%lf
    ",ans);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    7. 输油管道问题
    6. 循环赛日程表
    4.JSP内置对象
    3.JSP
    2.CSS
    1.HTML
    5. 逆序对数
    [转]Android View.onMeasure方法的理解
    [转]android:clipToPadding和android:clipChildren
    [转]倍数提高工作效率的 Android Studio 奇技
  • 原文地址:https://www.cnblogs.com/Opaser/p/4050250.html
Copyright © 2011-2022 走看看