AcWing 99. 激光炸弹

简介: AcWing 99. 激光炸弹

5e7ede58093444189ff17da02a43fbfc.png

思路:二维前缀和存价值。r>>x,y,所以先将r缩小,即 r=min(5001,r)。将xm和ym赋值为r,放置最后计算时越界。最后两重for循环,x和y从r开始遍历,然后差分。

#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
const int maxn = 5055;
int n, r;
int b[maxn][maxn];
int main()
{
   cin >> n >> r;
   r=min(5001,r);
   int xm = r, ym = r;
   for (int i = 1; i <= n; i++)
   {
      int x, y, w;
      cin >> x >> y >> w;
      x++, y++;
      xm = max(x, xm);
      ym = max(y, ym);
      b[x][y] += w;
   }
   for (int i = 1; i <= xm; i++)
   {
      for (int j = 1; j <= ym; j++)
      {
         b[i][j] += b[i - 1][j] + b[i][j - 1] - b[i - 1][j - 1];
      }
   }
   int res = 0;
   for (int i = r; i <= xm; i++)
   {
      for (int j = r; j <= ym; j++)
      {
         res = max(res, b[i][j] - b[i - r][j] - b[i][j - r] + b[i - r][j - r]);
      }
   }
   cout << res;
}


相关文章
|
12天前
【洛谷 P1781】宇宙总统 题解(高精度+结构体排序)
在宇宙总统竞选中,需计算得到最高票者。程序接收$n$($1\leq n\leq 20$)个候选人及其票数,使用自定义比较器`cmp`对结构体数组`vote`按票数长度排序。样例输入5人,票数分别为98765、12365、87954、1022356、985678,输出显示编号为4的候选人(票数1022356)获胜。代码中,结构体`S`包含候选人ID和票数字符串,通过`sort`函数及`cmp`函数按票数长度降序排列,输出首位即为胜者。
10 0
|
2月前
|
JSON 数据格式
星系炸弹(蓝桥杯)
星系炸弹(蓝桥杯)
|
2月前
|
存储
每日一题——地下迷宫(迷宫问题II)
每日一题——地下迷宫(迷宫问题II)
|
10月前
|
机器学习/深度学习 定位技术
[HNOI2003]激光炸弹
[HNOI2003]激光炸弹
|
11月前
|
机器学习/深度学习 人工智能 移动开发
Acwing 1574. 接雨水
Acwing 1574. 接雨水
45 0
|
定位技术
利用前缀和处理激光炸弹问题
利用前缀和处理激光炸弹问题
25 0
|
机器学习/深度学习 Java
AcWing——砝码称重
AcWing——砝码称重
72 0
|
Java C++ Python
受伤的皇后——21年模拟赛
受伤的皇后——21年模拟赛
58 0
|
Dart 算法 定位技术