很少用輸入掛,以為不超時就好了,但是這題貌似不用過不去啊
只好拿出來用了,當個模板
原理是用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個非負整數,表示第乙個矩陣。接下來...