數列操作
測試地址:☞
【題目描述】
給定 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 列操作
- 陣列的reduce操作+物件陣列的map操作陣列物件
- vue陣列操作遇到坑-關於陣列操作Vue陣列
- 3229. 使陣列等於目標陣列所需的最少操作次數陣列
- javascript陣列操作JavaScript陣列
- Scala陣列操作陣列
- Numpy陣列操作陣列
- JavaScript 陣列操作JavaScript陣列
- 【Git】命令列操作Git命令列
- JS常用陣列操作JS陣列
- 對陣列的操作陣列
- JavaScript陣列常用操作JavaScript陣列
- MySQL 命令列操作集合MySql命令列
- PDF 的命令列操作命令列
- Laravel 佇列基本操作Laravel佇列
- 陣列的基本操作陣列
- Python陣列常用操作Python陣列
- 數列
- 隱藏程式命令列引數,例如輸入密碼等高危操作命令列密碼
- PHP xml 轉陣列 陣列轉 xml 操作PHPXML陣列
- pyautocad 命令列方式操作 CAD命令列
- 命令列中的常用操作命令列
- 陣列的操作-變形陣列
- My SQL 列轉行操作SQL
- 初識Java(Java陣列-陣列的基本操作)Java陣列
- 等比數列
- Fibonacci數列
- JS常用陣列操作全解析JS陣列
- 如何在 Linux 命令列操作 PDFLinux命令列
- ZooKeeper常用命令列操作命令列
- iOS狀態列相關操作iOS
- JavaScript 陣列常見操作 (二)JavaScript陣列
- JavaScript 陣列常見操作(一)JavaScript陣列
- virtualBox 常用命令列操作命令列
- 記一次陣列操作:陣列 A 根據陣列 B 排序陣列排序
- 【VBA】Rangeの行、列、行數、列數を取得
- 最少操作次數