給定長度為n的數列a,然後輸入m行操作指令。
第一類指令形如「c l r d」,表示把數列中第l~r個數都加d。
第二類指令形如「q x」,表示詢問數列中第x個數的值。
對於每個詢問,輸出乙個整數表示答案。
輸入格式
第一行包含兩個整數n和m。
第二行包含n個整數a[i]。
接下來m行表示m條指令,每條指令的格式如題目描述所示。
輸出格式
對於每個詢問,輸出乙個整數表示答案。
每個答案佔一行。
資料範圍
1≤n,m≤1051≤n,m≤105,
|d|≤10000|d|≤10000,
|a[i]|≤1000000000|a[i]|≤1000000000
輸入樣例:
10 5
1 2 3 4 5 6 7 8 9 10
q 4q 1
q 2c 1 6 3
q 2
輸出樣例:
412
5
時/空限制:1s / 64mb
思路:利用樹狀陣列對該變數進行記錄,輸出時用原數字加上該變數即可.
#include#define ll long long
using namespace std;
const int n = 100000 + 10;
ll a[n],tree[n];
ll n;
ll lowbit(ll x)
ll query(ll x)
void add(ll x, ll val)
int main()
char c;
while(m--)
}return 0;
}//10 5
//16 -12 -16 -5 11 14 7 -3 -19 2
//c 5 8 -6
//q 3
//c 7 8 -1
//c 1 10 10
//q 4
acwing 242 乙個簡單的整數問題
給定長度為n的數列a,然後輸入m行操作指令。第一類指令形如 c l r d 表示把數列中第l r個數都加d。第二類指令形如 q x 表示詢問數列中第x個數的值。對於每個詢問,輸出乙個整數表示答案。輸入格式 第一行包含兩個整數n和m。第二行包含n個整數a i 接下來m行表示m條指令,每條指令的格式如題...
AcWing 242 乙個簡單的整數問題
原題鏈結 考察 樹狀陣列 確實簡單.就是差分 樹狀陣列即可.本蒟蒻還以為又有什麼神乎其神的優化.思路 我們先看第乙個指令 第一類指令形如c l r d,表示把數列中第 l r l r 個數都加 l r l r d d l r d l r區間內 d l r d l r d 單看這個操作容易想到差分.即...
一天乙個演算法題 簡單的 求乙個整數的反序列整數。
例如 現在有整數1234,輸出4321整數,問題摘自 演算法實現的不夠好.package com.jue.numberreverse public class numberreverse public static int getreversedatanumber int old int newda...