zoukankan      html  css  js  c++  java
  • hdu 5073 推公式相邻质心转换

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define N  51000
    int cmp(const void *a,const void *b) {
    return *(int *)a-*(int *)b;
    }
    int a[N];
    int sum[N];
    double all[N];
    double ss(int a,double b) {
    return (1.0*a-b)*(1.0*a-b);
    }
    double  Min(double a,double b) {
    return a>b?b:a;
    }
    int main() {
        int n,m,i,t;
        double ans,maxx;
        scanf("%d",&t);
        while(t--) {
            scanf("%d%d",&n,&m);
            for(i=1;i<=n;i++)
                scanf("%d",&a[i]);
                qsort(a+1,n,sizeof(a[0]),cmp);
                sum[0]=0;
            for(i=1;i<=n;i++)
                sum[i]=sum[i-1]+a[i];
            for(i=1;i<=m+1;i++)
        all[i]=1.0*(sum[i+n-m-1]-sum[i-1])/(n-m);
      //  printf("%d
    ",sum[n-m]);
     // printf("%.10f
    ",all[1]);
     ans=0;
            for(i=1;i<=n-m;i++)
                ans+=1.0*ss(a[i],all[1]);
                maxx=ans;
            //   printf("%.10f
    ",maxx);
                for(i=2;i<=m+1;i++) {
                ans=ans-2.0*(sum[i+n-m-2]-sum[i-1])*(all[i]-all[i-1])-1.0*ss(a[i-1],all[i-1])+1.0*ss(a[i+n-m-1],all[i])+(n-m-1)*(all[i]*all[i]-all[i-1]*all[i-1]);
                maxx=Min(maxx,ans);
                }
       printf("%.10f
    ",maxx);
        }
    return 0;}
    

  • 相关阅读:
    605. Can Place Flowers
    1184. Distance Between Bus Stops
    1711. Count Good Meals
    1710. Maximum Units on a Truck
    566. Reshape the Matrix
    980. Unique Paths III
    212. Word Search II
    每日总结
    每日总结
    每日总结
  • 原文地址:https://www.cnblogs.com/thefirstfeeling/p/4410566.html
Copyright © 2011-2022 走看看