bit區間增加區間求和,只不過是二維的......比一維麻煩多了。
這種題還是得自己推啊,強記果斷會暈掉。
公式大概是σσdij*(x-i+1)*(y-j+1),其中dij表示在(i,j)點上累計的增量,展開後得到σσdij*(x+1)*(y+1)-dij*i*(y+1)-dij*j*(x+1)+dij*i*j 然後x+1和y+1是在具體詢問中才知道的,所以我們維護4個bit:dij , dij*i , dij*j , dij*i*j 。
詢問的時候注意上面乘i的下面要乘x+1,上面乘j的下面要乘y+1。
view code
1 #include2 #include3 #include4 #include5 #include6我實在想噴這個題的資料範圍,實在太卡了,就是開小了re,開大了mle的節奏,建議大家開2050左右的int。#define maxn 2048
7using
namespace
std;
8int
n,m;
9struct
bit10
18int ask(int x,int
y)19
26}s,t,l,r;
2728
void ins(int x1,int y1,int x2,int y2,int
z)29
3536
int query(int x1,int y1,int x2,int
y2)37
4445
intmain()
4659
else
6065}66
return0;
67 }
BZOJ3132 上帝造題的七分鐘
description 第一分鐘,x說,要有矩陣,於是便有了乙個裡面寫滿了0的n m矩陣。第二分鐘,l說,要能修改,於是便有了將左上角為 a,b 右下角為 c,d 的乙個矩形區域內的全部數字加上乙個值的操作。第三分鐘,k說,要能查詢,於是便有了求給定矩形區域內的全部數字和的操作。第四分鐘,彩虹喵說,...
BZOJ 3132 上帝造題的七分鐘
bzoj 3132 上帝造題的七分鐘 樹狀陣列 第一分鐘,x說,要有矩陣,於是便有了乙個裡面寫滿了0的n m矩陣。第二分鐘,l說,要能修改,於是便有了將左上角為 a,b 右下角為 c,d 的乙個矩形區域內的全部數字加上乙個值的操作。第三分鐘,k說,要能查詢,於是便有了求給定矩形區域內的全部數字和的操...
BZOJ 3132 上帝造題的七分鐘 (樹狀陣列)
description 第一分鐘,x說,要有矩陣,於是便有了乙個裡面寫滿了 0 0 的n m role presentation n m n m矩陣。第二分鐘,l說,要能修改,於是便有了將左上角為 a b a,b 右下角為 c d c,d 的乙個矩形區域內的全部數字加上乙個值的操作。第三分鐘,k說,...