上帝造題的七分鐘 Tyvj 1716

2021-07-13 20:21:21 字數 2093 閱讀 8302

題目位址

**就意味著身體。

「第一分鐘,x說,要有矩陣,於是便有了乙個裡面寫滿了

0 的 n×

m矩陣。

第二分鐘,l說,要能修改,於是便有了將左上角為 (a

,b) ,右下角為 (c

,d) 的乙個矩形區域內的全部數字加上乙個值的操作。

第三分鐘,k說,要能查詢,於是便有了求給定矩形區域內的全部數字和的操作。

第四分鐘,彩虹喵說,要基於二叉樹的資料結構,於是便有了資料範圍。

第五分鐘,和雪說,要有耐心,於是便有了時間限制。

第六分鐘,吃鋼琴男說,要省點事,於是便有了保證運算過程中及最終結果均不超過32位有符號整數型別的表示範圍的限制。

第七分鐘,這道題終於造完了,然而,造題的神牛們再也不想寫這道題的程式了。」

——《上帝造裸題的七分鐘》

所以這個神聖的任務就交給你了。

輸入資料的第一行為 xn

m ,代表矩陣大小為 n×

m 。

從輸入資料的第二行開始到檔案尾的每一行會出現以下兩種操作: la

bcdd

elta

—— 代表將 (a

,b) , (c

,d) 為頂點的矩形區域內的所有數字加上 de

lta 。 ka

bcd —— 代表求 (a

,b) , (c

,d) 為頂點的矩形區域內所有數字的和。

請注意,

k 為小寫。

針對每個

k操作,在單獨的一行輸出答案。

x 4 4

l 1 1 3 3 2

l 2 2 4 4 1

k 2 2 3 3

對於 10%

的資料,1≤

n≤16 , 1≤

m≤16 , 操作不超過

200 個.

對於 60

% 的資料,1≤

n≤512 , 1≤

m≤512 .

對於 100

% 的資料,1≤

n≤2048

, 1≤

m≤2048

, 1≤

delt

a≤500 , 操作不超過

200000

個,保證運算過程中及最終結果均不超過32位帶符號整數型別的表示範圍。

by xlk

二維樹狀陣列,區間修改+區間查詢模板題。

學到了神犇cai的讀入優化,感覺大神的**就是不同,讀入優化都比我快。

#include 

#include

using

namespace

std;

int n,m,num,ch[100];

char str;

int bit1[2059][2059];

int bit2[2059][2059];

int bit3[2059][2059];

int bit4[2059][2059];

inline

void in(int &ans)

while(x>='0'&&x<='9')

ans*=flag;

}inline

void add(int x,int y,int z,int

array[2059][2059])

inline

int get_sum(int x,int y,int

array[2059][2059])

inline

int sum(int x,int y)

inline

void out(int k)

if(k==0)

while(k>0)ch[++num]=k%10,k/=10;

while(num)putchar(ch[num--]+48);

putchar(10);

}int main()

else

}return

0;}

上帝造題的七分鐘2

xlk覺得 上帝造題的七分鐘 不太過癮,於是有了第二部。第一分鐘,x說,要有數列,於是便給定了乙個正整數數列。第二分鐘,l說,要能修改,於是便有了對一段數中每個數都開平方 下取整 的操作。第三分鐘,k說,要能查詢,於是便有了求一段數的和的操作。第四分鐘,彩虹喵說,要是noip難度,於是便有了資料範圍...

2492 上帝造題的七分鐘 2

時間限制 1 s 空間限制 64000 kb 題目等級 大師 master 題解xlk覺得 上帝造題的七分鐘 不太過癮,於是有了第二部。第一分鐘,x說,要有數列,於是便給定了乙個正整數數列。第二分鐘,l說,要能修改,於是便有了對一段數中每個數都開平方 下取整 的操作。第三分鐘,k說,要能查詢,於是便...

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是在具體詢...