日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

树状数组求区间和(区间均值)

發(fā)布時(shí)間:2024/9/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 树状数组求区间和(区间均值) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1658: O__O "… 就是那道中文題
Time Limit: 1 Sec Memory Limit: 128 MB

[Submit][Status][Web Board]
Description

有一天某人得到了一組數(shù)據(jù),然后煩人的是,有位同學(xué)老是詢問(wèn)某一段區(qū)間[L,r]范圍的平均值(只要整數(shù)部分)= =。某人無(wú)法解決,向你求救、

Input

多組測(cè)試,處理到文件末尾。一行一個(gè)n,m(n,m<=100000), 接下來(lái)一行n個(gè)數(shù)字(每個(gè)數(shù)小于等于200)。

再接下來(lái)是m行,每行是兩個(gè)數(shù)L,R;

Output

輸出答案。

Sample Input

5 4
1 2 3 4 5
1 1
1 2
1 5
2 4

Sample Output

1
1
3
3

HINT

Source
AC代碼~:

#include <stdio.h>#include <algorithm>using namespace std;int a[100005],n,m;int lowbit(int x){return x&-x;}int getSum(int y)//求前y項(xiàng)和{int sum = 0;for(int i = y; i > 0; i-=lowbit(i))sum += a[i];return sum;}void update(int x,int y)//單點(diǎn)更新{for(int j = x; j <= n; j+=lowbit(j))a[j] += y;}int main(){while(~scanf("%d%d",&n,&m)){fill(a,a+n+1,0);int num;/*a[i]存的不是直接輸入的數(shù)據(jù),而是形成數(shù)狀數(shù)組整合的數(shù)據(jù)此整合操作要借助單點(diǎn)更新函數(shù)*/for(int i = 1; i <= n; i++){scanf("%d",&num);update(i,num);}int L,R,aver,t;while(m--){scanf("%d%d",&L,&R);R>L?(t=0):(t=L,L=R,R=t);aver = (getSum(R)-getSum(L-1))/(R-L+1);printf("%d\n",aver);}}return 0;}/* 總結(jié): 對(duì)于大數(shù)據(jù)區(qū)間問(wèn)題要馬上想到樹(shù)狀數(shù)組,多運(yùn)用加深理解 */

總結(jié)

以上是生活随笔為你收集整理的树状数组求区间和(区间均值)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。