1 条题解
-
0
#include<bits/stdc++.h> using namespace std; #define int long long void solve() { int n,m; cin >> n >> m; int a[n+1][m+1] = {0}; // sa存“差对角线”和,sb存“和对角线”和; // 数组大小1000足够(因n,m最大200) int sa[1000] = {0}, sb[1000] = {0}; int ans = 0; for(int i = 1; i <= n; i++){ for(int j = 1; j <= m; j++){ cin >> a[i][j]; // 将a[i][j]累加到其“差对角线”的和中 sa[i - j + n + m] += a[i][j]; // 将a[i][j]累加到其“和对角线”的和中 sb[i + j] += a[i][j]; } } for(int i = 1; i <= n; i++){ for(int j = 1; j <= m; j++){ // 计算(i,j)作为主教位置的攻击和:两条对角线和之和 - 自身 ans = max(ans, sa[i - j + n + m] + sb[i + j] - a[i][j]); } } cout << ans << '\n'; } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr); int T = 1; cin >> T; while (T--) solve(); return 0; }
- 1
信息
- ID
- 1191
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 65
- 已通过
- 19
- 上传者