P1471 方差 線段樹 數學公式推導

2021-10-16 13:13:17 字數 1351 閱讀 1663

給定乙個長度為n的01序列,下標從0開始, 需要實現如下五種操作.

這就是一道數學推公式+線段樹維護區間 的典型例題!

在我判斷浮點數是否為0的時候大意了啊, 寫了1e-5, 結果wa了半天.

#include

#define rep(i, n) for (int i = 1; i <= (n); ++i)

using

namespace std;

typedef

long

long ll;

const

int n =

1e5+10;

double w[n]

;struct node t[n <<2]

;void

pushdown

(node& op,

double lazy)

void

pushdown

(int x)

void

pushup

(int x)

void

build

(int l,

int r,

int x =1)

;if(l == r)

return

;int mid = l + r >>1;

build

(l, mid, x <<1)

,build

(mid +

1, r, x <<1|

1);pushup

(x);

}void

modify

(int l,

int r,

double c,

int x =1)

pushdown

(x);

int mid = t[x]

.l + t[x]

.r >>1;

if(l <= mid)

modify

(l, r, c, x <<1)

;if(r > mid)

modify

(l, r, c, x <<1|

1);pushup

(x);

}node ask

(int l,

int r,

int x =1)

intmain()

else

if(k ==2)

printf

("%.4f\n"

,ask

(l, r)

.val /

(r - l +1)

);else

}return0;

}

洛谷 P1471 方差

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

洛谷P1471 方差

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

洛谷 P1471 方差

蒟蒻hansbug在一本數學書裡面發現了乙個神奇的數列,包含n個實數。他想算算這個數列的平均數和方差。那麼只要維護區間平方和,就可以求方差了。區間平方和,恩,push down稍微改一下即可。注意精度問題。include define n int 1e6 define ll long long us...