【題解】
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行,每行為一條操作,...