Gym 100741A(樹狀陣列)

2021-08-07 07:02:30 字數 1115 閱讀 5771

分析:「+ p r」:下標為p的數加上r;

「- p r」:下標為p的數加上r;

「s l r mod」:求[l,r]中模m後等於mod的數之和。

時間限制比較小,用樹狀陣列快,開m個樹狀陣列,每乙個儲存取模後值相同的數。注意用long long

**如下:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

#define ll long long

#define ee 0.000000001

#define bug "++++++++++++++++"

#define lowbit(x) x&-x

using namespace std;

const int maxn=100005;

long

long n,m;

long

long arr[maxn];

long

long c[2*maxn][15];

//讓arr[x]加上或者減去d

void add(long

long x,long

long d,long

long

mod)

}//求arr[1...x]的和

long

long

sum(int x,long

long

mod)

return ret;

}int main()

int q;

scanf("%d",&q);

while(q--)

else

if(op=='-')

add(index,arr[index],arr[index]%m);

printf("%lld\n",arr[index]);

}else

if(op=='s')

}}

樹狀陣列1 樹狀陣列入門

仔細看一下,發現tree的每乙個節點的高度並不是隨意的,而是由它轉成二進位制之後末尾連續零的數量決定的,連續零的數量加1,就是高度,例如 3 11 零的數量為0,加1等於1,所以它的高度就是1 6 110 零的數量為1,加1等於2,所以它的高度就是2 8 1000 零的數量為3,加1等於4,所以它的...

樹狀陣列 瞎bb 樹狀陣列

樹狀陣列是乙個利用一維陣列和位運算組成的求解區間問題的高效資料結構,其構造如圖所示 首先,我們要用它解決單點修改 區間查詢的操作。根據這張圖我們建立乙個陣列bit,下標就是圖中顯示的十進位制數。bit i 就表示了圖中所示的一段區間的和,例如bit 6 sum 5,6 bit 4 sum 1,4 下...

樹狀陣列 二維樹狀陣列模板

樹狀陣列模板 int lowbit int x int add int x,int val int que int x 模板題 題解 include include include using namespace std int c 300000 rank 300000 int n int lowb...