輸入掛(bzoj 2901 矩陣求和)

2021-09-30 14:17:20 字數 1199 閱讀 2640

很少用輸入掛,以為不超時就好了,但是這題貌似不用過不去啊

只好拿出來用了,當個模板

原理是用getchar()讀入會比用scanf快一些

int read()

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

x = x*10+ch-'0', ch = getchar();

return x*f;

}

time limit: 20 sec  

memory limit: 256 mb

submit: 506  

solved: 284 [

submit][

status][

discuss]

給出兩個n*n的矩陣,m次詢問它們的積中給定子矩陣的數值和。

第一行兩個正整數n,m。

接下來n行,每行n個非負整數,表示第乙個矩陣。

接下來n行,每行n個非負整數,表示第二個矩陣。

接下來m行,每行四個正整數a,b,c,d,表示詢問第乙個矩陣與第二個矩陣的積中,以第a行第b列與第c行第d列為頂點的子矩陣中的元素和。

對每次詢問,輸出一行乙個整數,表示該次詢問的答案。

3 21 9 8

3 2 0

1 8 3

9 8 4

0 5 15

1 9 6

1 1 3 3

2 3 1 2

661

388

超好推得公式

用字首和搞搞,不過詢問過多複雜度也不低

#include#includeusing namespace std;

int a[2005][2005], b[2005][2005], sa[2005][2005], sb[2005][2005];

int read()

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

x = x*10+ch-'0', ch = getchar();

return x*f;

}int main(void)

} for(i=1;i<=n;i++)

}while(m--)

}return 0;

}

BZOJ 2901 矩陣求和

bzoj 2901 矩陣求和 字首和 給出兩個n n的矩陣,m次詢問它們的積中給定子矩陣的數值和。第一行兩個正整數n,m。接下來n行,每行n個非負整數,表示第乙個矩陣。接下來n行,每行n個非負整數,表示第二個矩陣。接下來m行,每行四個正整數a,b,c,d,表示詢問第乙個矩陣與第二個矩陣的積中,以第a...

BZOJ 2901 矩陣求和

time limit 20 sec memory limit 256 mb submit 411 solved 216 submit status discuss 給出兩個n n的矩陣,m次詢問它們的積中給定子矩陣的數值和。第一行兩個正整數n,m。接下來n行,每行n個非負整數,表示第乙個矩陣。接下來...

BZOJ 2901 矩陣求和 字首和

time limit 20 sec memory limit 256 mb submit 512 solved 289 submit status discuss 給出兩個n n的矩陣,m次詢問它們的積中給定子矩陣的數值和。第一行兩個正整數n,m。接下來n行,每行n個非負整數,表示第乙個矩陣。接下來...