牛客 LaserBombs Solution (二维前缀和)
发布时间
阅读量:
阅读量
原题链接:https://ac.nowcoder.com/acm/contest/999/A
解题思路 :采用s[][]数组用于保存各个位置对应的数值,随后对s数组执行二维前缀和的处理,使得s[i][j]所存储的数据表示以坐标x = i、y = j为顶点,并与坐标轴共同构成的区域内的总价值。接下来,对每个边长为R的正方形区域内的s数组值进行遍历,从中确定最大值
注意 :r的取值可能超过5001,这将导致在运行过程中出现溢出问题,因此需要预先将r设置为r = min(5001, r)
对于不熟悉二维前缀和操作的用户,可以参考以下链接:
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 5e3 + 10;
int a[N][N], s[N][N];
int n, r;
int w;
int rv;
int main()
{
cin>>n>>r;
r = min(5001, r);
int i1 = r, j1 = r;
while(n -- ){
int i, j;
ci
全部评论 (0)
还没有任何评论哟~
