description
「第一分鐘,x說,要有矩陣,於是便有了乙個裡面寫滿了
0 0
的n∗m' role="presentation">n∗m
n∗m矩陣。
第二分鐘,l說,要能修改,於是便有了將左上角為(a
,b) (a,
b)
,右下角為(c
,d) (c,
d)
的乙個矩形區域內的全部數字加上乙個值的操作。
第三分鐘,k說,要能查詢,於是便有了求給定矩形區域內的全部數字和的操作。
第四分鐘,彩虹喵說,要基於二叉樹的資料結構,於是便有了資料範圍。
第五分鐘,和雪說,要有耐心,於是便有了時間限制。
第六分鐘,吃鋼琴男說,要省點事,於是便有了保證運算過程中及最終結果均不超過32位有符號整數型別的表示範圍的限制。
第七分鐘,這道題終於造完了,然而,造題的神牛們再也不想寫這道題的程式了。」
——《上帝造裸題的七分鐘》
所以這個神聖的任務就交給你了
input
輸入資料的第一行為x n m
,代表矩陣大小為n∗
m n∗m
從輸入資料的第二行開始到檔案尾的每一行會出現以下兩種操作:
l a b c d delta
—— 代表將(a
,b),
(c,d
) (a,
b),(
c,d)
為頂點的矩形區域內的所有數字加上de
lta del
ta
k a b c d
—— 代表求(a
,b),
(c,d
) (a,
b),(
c,d)
為頂點的矩形區域內所有數字的和
請注意,k為小寫
output
針對每個k操作,在單獨的一行輸出答案。
sample input
x 4 4
l 1 1 3 3 2
l 2 2 4 4 1
k 2 2 3 3
sample output
12data size & hint
對於100%的資料,1≤
n≤2048,1
≤m≤2048,1
≤abs
(del
ta)≤
500 1≤n
≤2048,1
≤m
≤2048,1
≤abs
(del
ta)≤
500,操作不超過200000個,保證運算過程中及最終結果均不超過32位帶符號整數型別的表示範圍
裸的樹狀陣列應用
二維區間修改區間查詢樹狀陣列
詳解請戳這
#include
using
namespace
std;
typedef
long
long ll;
int n,m;
int a[4][2050][2050];
int lowbit(int x)
void insert(int x,int y,ll add)
newx+=lowbit(newx);
}}int query(int x,int y)
newx-=lowbit(newx);
}return ans;
}int read()
while(_ch >= '0' && _ch <= '9')
return _ans*_flag;
}int main()
else
}return
0;}
bzoj 3132 上帝造題七分鐘
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是在具體詢...
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說,要能查詢,於是便有了求給定矩形區域內的全部數字和的操...