第17章部分と


部分マージ
アレイ内の各位置の要素の合計(アレイから現在の位置まで).
計算部分和
// 주어진 벡터의 부분합을 계산한다.
vector <int> partialSum(const vector<int>& a){
	vector<int> ret(a.size());
    ret[0] = a[0]
    for(int i=1; i < a.size(); ++i){
        ret[i] = ret[i-1] + a[i];
    }
    return ret;
}

//어떤 벡터의 부분합으로, 원래 벡터의 a부터 b까지의 합을 구한다.
int rangeSum(const vector<int>& psum, int a, int b){
    if(a==0)
        return psum[b];
    return psum[b] - psum[a-1];
}
部分と計算で分布する
double variance(const vector<int>& sqpsum, const vector<int>& psum, int a, int b){
    double mean = rangeSum(psum, a, b) / (b - a - 1);
    double ret rangeSum(sqpsum, a, b) - 2 * mean * rangesum(psum, a, b) + (b - a + 1) * mean * mean;
    return ret / (b - a + 1);
}
2 Dに拡張
例:および0に最も近い領域
質問:クリスマス人形(CHRISTMAS,中)
再読み込み
  • クリスマス人形