洛谷 1471 方差

2022-09-06 17:27:12 字數 1318 閱讀 8810

【題解】

1,本題要求維護乙個序列,支援區間加k,詢問區間平均數和方差。

3,方差的處理就相對麻煩一些。需要研究一下公式。

我們先看看方差的公式:

那就是1/n乘上這個式子:

也就是區間平方和sqr-區間和sum的兩倍+平均數**e的平方乘區間長len,所得結果再除以區間長len

4,在區間修改的時候,怎麼維護sqr呢?我們可以發現修改後的平方和為:

(k是區間加上的數)

展開式子就是:

那就是原來的sqr+原來的sum乘k乘2+k的平方乘區間長len

這樣,我們就可以解決這個問題了

#include#include#define n (800010)

#define ls (u<<1)

#define rs (u<<1|1)

#define mid ((a[u].l+a[u].r)>>1)

#define len(x) (a[x].r-a[x].l+1)

using namespace std;

int n,m,opt,x,y;

double del,sqr,sum;

struct treea[n];

inline int read()

inline void pushup(int u)

inline void pushdown(int u)

void build(int u,int l,int r)

void query(int u,int l,int r,double &sqr,double &sum)

pushdown(u);

if(l<=mid) query(ls,l,r,sqr,sum);

if(r>mid) query(rs,l,r,sqr,sum);

}int main()

if(opt==3)

} return 0;

}

洛谷 1471 方差

竟然用到了數學課本上的知識 真心好題 首先,算術 平均數 a ni 1ai n 方差的兩個最基本的形式 s2 ni 1 a ai 2n ni 1a2i n ni 1 ai 2 n2這道題這麼明顯的區間操作,顯然容易想到線段樹。操作1和2都好說,但是維護方差真的好屎啊 而且還不會 只需要在原來的區間和...

洛谷 P1471 方差

題目背景 滾粗了的hansbug在收拾舊數學書,然而他發現了什麼奇妙的東西。題目描述 蒟蒻hansbug在一本數學書裡面發現了乙個神奇的數列,包含n個實數。他想算算這個數列的平均數和方差。輸入輸出格式 輸入格式 第一行包含兩個正整數n m,分別表示數列中實數的個數和操作的個數。第二行包含n個實數,其...

洛谷P1471 方差

題目描述 蒟蒻hansbug在一本數學書裡面發現了乙個神奇的數列,包含 n 個實數。他想算算這個數列的平均數和方差。輸入輸出格式 輸入格式 第一行包含兩個正整數 n m 分別表示數列中實數的個數和操作的個數。第二行包含 n 個實數,其中第 i 個實數表示數列的第 i 項。接下來m行,每行為一條操作,...