1 条题解
-
0
解题思路
- 前缀和优化:为了高效计算矩形区域的总和,预处理二维前缀和数组。
- 二维前缀和公式
- 输入输出处理:注意行和列的索引从1开始,以及每个测试用例后需输出空行。
代码示例(C++)
#include <iostream> using namespace std; const int MAX_SIZE = 1005; int prefix[MAX_SIZE][MAX_SIZE]; // 前缀和数组,1-based索引 int main() { int N; cin >> N; for (int cases = 0; cases < N; ++cases) { int R, S; cin >> R >> S; // 初始化前缀和数组 for (int i = 1; i <= R; ++i) { for (int j = 1; j <= S; ++j) { cin >> prefix[i][j]; prefix[i][j] += prefix[i-1][j] + prefix[i][j-1] - prefix[i-1][j-1]; } } int D; cin >> D; for (int q = 0; q < D; ++q) { int r1, s1, r2, s2; cin >> r1 >> s1 >> r2 >> s2; // 计算矩形区域和 int sum = prefix[r2][s2] - prefix[r1-1][s2] - prefix[r2][s1-1] + prefix[r1-1][s1-1]; cout << "Absolutni hodnota pohodlnosti je " << sum << " bodu." << endl; } // 输出空行(每个测试用例后) if (cases != N-1 || D != 0) { // 处理最后一个测试用例后可能不需要空行的情况(但题目要求每个后都有) cout << endl; } } return 0; }
- 1
信息
- ID
- 1216
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者