題目連結: https://zerojudge.tw/ShowProblem?problemid=a694
# 內容
有 n * n 個食物在你面前排成一個方陣,每個食物有它的飽足度,你想知道把其中一塊通通吃掉會獲得多少飽足度
# 輸入
多組測資以 EOF 結束
每組測資開始有兩個正整數 n,m (n<=500, m<=100000)
接下來 n 行有 n 個不超過 100 的正整數依序代表每個食物的飽足度
接下來 m 行每行有四個數字 x1,y1,x2,y2 (1 <= x1 <= x2 <= n, 1 <= y1 <= y2 <= n)
代表你想要吃掉食物的範圍
# 輸出
對每組測資輸出 m 行,代表總飽足度
# 解題思路
先輸入好表格,再把範圍內的結果都加起來。記得開 IO 加速喔
# 程式碼
#include <iostream> | |
using namespace std; | |
int main(){ | |
ios::sync_with_stdio(false); | |
cin.tie(0); | |
int n,m; | |
while(cin>>n>>m){ | |
int arr[n+1][n+1]; | |
for(int i=1;i<=n;i++){ | |
for(int j=1;j<=n;j++) | |
cin>>arr[i][j]; | |
} | |
int x1,x2,y1,y2; | |
for(int i=0;i<m;i++){ | |
int sum=0; | |
cin>>x1>>y1>>x2>>y2; | |
for(int i=x1;i<=x2;i++){ | |
for(int j=y1;j<=y2;j++) | |
sum+=arr[i][j]; | |
} | |
cout<<sum<<endl; | |
} | |
} | |
} |