

Tam giác số (30 điểm)
ANH CHỊ ĐỘI TUYỂN HSG K24 25 GIÚP EM BÀI NÀY VỚI Ạ, FULL TEST LUÔN NHÁ Ạ, ANH CHỊ ĐỪNG DÙNG CHAT GPT COP THUẬT TOÁN NHÉ, EM CÓ PHẦN MỀM CHECK AI VS CHAT GPT BAO NHIÊU % NÊN EM THẤY, MONG ANH CHỊ TỰ GIẢI ĐỂ EM HIỂU CHÚT A! CẢM ƠN NHIỀU>>!!!
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
Sử dụng thuật toán mảng cộng dồn 2 chiều:
`f_[i,j]=f_[i-1,j]-f_[i-1,j-1]+f_[i,j-1]+a_[i,j]`
Khi đó, tổng của khu vực `kxxk` có ô góc phải dưới cùng là `i,j` có thể tính trong `O(1)` bằng công thức:
`f_[i,j]-f_[i-k-1,j]+f_[i-k-1,j-k-1]-f_[i,j-k-1]`
#include <bits/stdc++.h>
#define int long long
using namespace std;
int m, n, k, res = LLONG_MIN;
vector< vector<int> > a, f;
signed main()
{
cin >> m >> n >> k;
a.assign(m+1, vector<int>(n+1, 0);
f.assign(m+1, vector<int>(n+1, 0);
for (int i = 1; i <= m; ++i) for (int j = 1; j <= n; ++j)
{
cin >> a[i][j];
f[i][j] = f[i-1][j] - f[i-1][j-1] + f[i][j-1] + a[i][j];
}
for (int i = k; i <= m; ++i) for (int j = k; j <= n; ++j)
res = max(res, f[i][j] - f[i-k-1][j] + f[i-k-1][j-k-1] - f[i][j-k-1]);
cout << res;
}Hãy giúp mọi người biết câu trả lời này thế nào?

Bảng tin
1
366
1
Ôi CẢM ƠN a/c nhiều ạ
411
1439
286
xin phép hủy set do có vấn đề riêng ạa.