zoukankan      html  css  js  c++  java
  • HDU_5734_数学推公式

    题意:给一个向量W={w1,w2……,wn},和一个向量B,B的分量只能为1和-1。求||W-αB||²的最小值。

    思路:一来一直在想距离的问题,想怎么改变每一维的值才能使这个向量的长度最小,最后无果。

      看了题解说是推公式,并且将结果看作是方差,这样W中的负值可直接转化为正值,也即将B所有分量当作1(这里需要想一下),所以只需要看α,当结果为方差时最小,也即α为均值,根据||x||=√∑xi²,将平方项展开,观察思考一下应该可以化解为(n∑wi²-sum²)/n

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<queue>
    #include<vector>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    
    long long gcd(long long a,long long b)
    {
        if(a==0)
            return b;
        if(b==0)
            return a;
        if(a<b)
        {
            long long term=a;
            a=b;
            b=term;
        }
        while(a%b)
        {
            long long mo=a%b;
            a=b;
            b=mo;
        }
        return b;
    }
    
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            int n;
            scanf("%d",&n);
            long long sum=0,ans1=0,ans2=n,num;
            for(int i=0;i<n;i++)
            {
                scanf("%I64d",&num);
                if(num<0)
                    num*=-1;
                sum+=num;
                ans1+=n*num*num;
            }
            ans1-=sum*sum;
            //cout<<"*"<<endl;
            long long tmp=gcd(ans1,ans2);
            //cout<<ans1<<"*"<<ans2<<endl;
            printf("%I64d/%I64d
    ",ans1/tmp,ans2/tmp);
        }
        return 0;
    }
  • 相关阅读:
    金额与数字转化常用实用几个JS方法
    Jdb命令 The Java Debugger
    GLOBAL TEMPORARY TABLE
    安装与配置Nginx
    MySQL二进制安装与密码破解
    基于FPM构建企业RPM包
    安装Tomcat
    nginx配置优化
    DHCP原理及配置(三个小实验)
    DNS主、从服务器的配置
  • 原文地址:https://www.cnblogs.com/jasonlixuetao/p/5696217.html
Copyright © 2011-2022 走看看