246 字
1 分钟
前缀和
2025-11-04
统计加载中...
  • 基本的代码
vector<int> pre(n + 1, 0);
for (int i = 0; i < n; i++) {
pre[i + 1] = pre[i] + o[i];
}
  • 主要是在O(1)用来算一段区间的和

二维前缀和#

ll a[N][N], pre[N][N];
void solve()
{
ll n, m, c;
cin >> n >> m >> c;
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= m; ++j)
cin >> a[i][j];
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= m; ++j)
pre[i][j] = pre[i][j - 1] + pre[i - 1][j] - pre[i - 1][j - 1] + a[i][j];
ll ans = -INF;
ll x = 0, y = 0;
for(int i = 1; i <= n; ++i)
{
for(int j = 1; j <= m; ++j)
{
if(i + c - 1 > n || j + c - 1 > m)
continue;
if(ans < pre[i + c - 1][j + c - 1] - pre[i + c - 1][j - 1] - pre[i - 1][j +c - 1] + pre[i - 1][j - 1])
{
ans = pre[i + c - 1][j + c - 1] - pre[i + c - 1][j - 1] - pre[i - 1][j+ c - 1] + pre[i - 1][j - 1];
x = i, y = j;
}
}
}
cout << x << " " << y << '\n';
}
前缀和
https://www.nanye404.top/posts/pre/
作者
南叶酱
发布于
2025-11-04
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

封面
示例歌曲
示例艺术家
封面
示例歌曲
示例艺术家
0:00 / 0:00