數列操作
測試地址:☞
【題目描述】
給定 n 個數列,規定有兩種操作,一是修改某個元素,二是求子數列 [a,b] 的連續和。數列元素個數最多10 萬個,詢問操作最多1010萬次。
【輸入】
第一行 2 個整數 n,m ( n 表示輸入 n 個數,m 表示 m 操作)
第二行 n 個整數
接下來 m 行,每行三個數 k,a,b ( k=0 ,表示求子數列 [a,b] 的連續和;k=1,表示第 a 個數加 b)。
【輸出】
若干行,表示 k=0 時,對應子數列 [a,b] 連續和。
【輸入樣例】
10 5 1 2 3 4 5 6 7 8 9 10 1 1 5 0 1 3 0 4 8 1 7 5 0 4 8
【輸出樣例】
11 30 35
【思路】
一道模板題,直接套用即可,可參考 樹狀陣列
【AC程式碼】
#include<cstdio>
const int maxn=1e6+7;
int c[maxn];
int n, m, x;
int Lowbit(int x){
return x&(-x);
}
void update(int x, int y){
for(int i = x; i <= n; i+=Lowbit(i))
c[i] += y;
}
int sum(int x){
int sumn=0;
for(int i = x; i > 0; i-=Lowbit(i))
sumn += c[i];
return sumn;
}
int main(){
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i++){
scanf("%d", &x);
update(i, x);
}
while(m--){
int k, a, b;
scanf("%d%d%d", &k, &a, &b);
if(k == 1){
update(a, b);
}
else{
printf("%d\n", sum(b)-sum(a-1));
}
}
return 0;
}
相關文章
- 陣列進行奇數和偶數操作 把奇數放在陣列前面 偶數放在陣列後面陣列
- pandas 列操作
- 陣列操作陣列
- Oracle列操作Oracle
- vue陣列操作遇到坑-關於陣列操作Vue陣列
- 陣列的reduce操作+物件陣列的map操作陣列物件
- UltraEdit 列操作及列轉行
- 3229. 使陣列等於目標陣列所需的最少操作次數陣列
- javascript陣列操作JavaScript陣列
- 【Git】命令列操作Git命令列
- Numpy陣列操作陣列
- Scala陣列操作陣列
- Jquery陣列操作jQuery陣列
- JavaScript 陣列操作JavaScript陣列
- PDF 的命令列操作命令列
- Laravel 佇列基本操作Laravel佇列
- 對陣列的操作陣列
- JS常用陣列操作JS陣列
- MySQL 命令列操作集合MySql命令列
- JavaScript陣列常用操作JavaScript陣列
- JS中陣列操作JS陣列
- 陣列的操作(2)陣列
- 佇列的基本操作佇列
- Scala的陣列操作陣列
- 陣列的基本操作陣列
- Proc中使用char陣列、VARCHAR陣列和char變數進行DELETE操作具體行數的細微區別陣列變數delete
- 隱藏程式命令列引數,例如輸入密碼等高危操作命令列密碼
- 等比數列
- PHP xml 轉陣列 陣列轉 xml 操作PHPXML陣列
- 命令列中的常用操作命令列
- 陣列的操作-變形陣列
- Python陣列常用操作Python陣列
- Numpy 陣列簡單操作陣列
- Java操作Json陣列JavaJSON陣列
- 【轉】命令列操作快捷鍵命令列
- perl操作二維陣列陣列
- 順序佇列基本操作佇列
- My SQL 列轉行操作SQL