51nod 1098 最小方差

2021-08-18 14:48:42 字數 1064 閱讀 2501

1098 最小方差

基準時間限制:1 秒 空間限制:131072 kb 分值: 20 

難度:3級演算法題

若x1,x2,x3......xn的平均數為k。

則方差s^2 = 1/n * [(x1-k)^2+(x2-k)^2+.......+(xn-k)^2] 。

方差即偏離平方的均值,稱為標準差或均方差,方差描述波動程度。

給出m個數,從中找出n個數,使這n個數方差最小。

input

第1行:2個數m,n,(m > n, m <= 10000)

第2 - m + 1行:m個數的具體值(0 <= xi <= 10000)

output

輸出最小方差 * n的整數部分。
input示例

5 312345

output示例

2
思路:一.暴力,排序後直接求每乙個n區間的方差

二.化簡

n*d=(x1-k)^2+(x2-k)^2+...+(xn-k)^2

=(x1^2+x2^2+...+xn^2)-2*k*(x1+x2+...+xn)+n*k^2

又 k=(x1+x2+...+xn)/n 代入得

n*d=(x1^2+x2^2+...+xn^2)-(x1+x2+...+xn)^2/n 

code 1:

//暴力~~~ 

#include#includeusing namespace std;

typedef long long ll;

const int max_n=10005;

int n,m;

ll a[max_n],s2[max_n];

int main()

long double min=1e18;

for(int i=m;i<=n;++i)

min=min(min,s2[i]-s2[i-m]-(long double)(sum[i]-sum[i-m])*(sum[i]-sum[i-m])/m);

cout<

51nod1098 最小方差 公式暴力

1098 最小方差 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 若x1,x2,x3.xn的平均數為k。則方差s 2 1 n x1 k 2 x2 k 2 xn k 2 方差即偏離平方的均值,稱為標準差或均方差,方差描述波動程度。給出m個數,從中找出n個數,使這n...

51Nod 1098 最小方差 數學

題目 若x1,x2,x3.xn的平均數為k。則方差s 2 1 n x1 k 2 x2 k 2 xn k 2 方差即偏離平方的均值,稱為標準差或均方差,方差描述波動程度。給出m個數,從中找出n個數,使這n個數方差最小。輸入 第1行 2個數m,n,m n,m 10000 第2 m 1行 m個數的具體值 ...

51nod 最小方差 1098

若x1,x2,x3 xn的平均數為k。則方差s 2 1 n x1 k 2 x2 k 2 xn k 2 方差即偏離平方的均值,稱為標準差或均方差,方差描述波動程度。給出m個數,從中找出n個數,使這n個數方差最小。input 第1行 2個數m,n,m n,m 10000 第2 m 1行 m個數的具體值 ...