zoukankan      html  css  js  c++  java
  • hdu 5073 Galaxy

    题意是给定n个点,让求找到一个点p使得sigma( (a[i] - p) ^ 2 ) 最小,其中a[i]表示第i个点的位置。其中有k个点不用算。

    思路:发现这道题其实就是求n-k个点方差。

    那么推一下公式就是:

    sigma( (a[i] - p)^ 2 )

    = sigma( a[i]^2 + p^2 - 2*a[i]*p )

    = sigma( a[i]^2 + p^2) ) - sigma( 2*a[i]*p )

    = sigma( a[i]^2 ) + (n-k)*(p^2) - 2*p*sigma( a[i] ) //因为sigma求的是n-k个数的和

    = sum2[i] + (n-k)*(p^2) - 2*p*sum[i]

    这里sum2[i]就是前个数的平方和,sum[i]是前i个数的和。p是这段长度为n-k的区间的平均值。一遍预处理就可以求出来。所以总的时间复杂度也是O(n)

  • 相关阅读:
    Objective
    Objective
    安排
    ios 类的内部结构
    什么是静态语言,什么是动态语言?
    ios 中的 GCD
    IOS 中的JS
    菱形开合的实现 IOS
    典题
    c++连接数据库 在vc6.0
  • 原文地址:https://www.cnblogs.com/Howe-Young/p/4943495.html
Copyright © 2011-2022 走看看