(题面来自AcWing)

一种新型的激光炸弹,可以摧毁一个边长为 R 的正方形内的所有的目标。

现在地图上有 N 个目标,用整数Xi,Yi表示目标在地图上的位置,每个目标都有一个价值Wi。

激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆炸范围,即那个边长为 R的正方形的边必须和x,y轴平行。

若目标位于爆破正方形的边上,该目标不会被摧毁。

求一颗炸弹最多能炸掉地图上总价值为多少的目标。

输入格式

第一行输入正整数 N 和 R ,分别代表地图上的目标数目和正方形的边长,数据用空格隔开。

接下来N行,每行输入一组数据,每组数据包括三个整数Xi,Yi,Wi,分别代表目标的x坐标,y坐标和价值,数据用空格隔开。

输出格式

输出一个正整数,代表一颗炸弹最多能炸掉地图上目标的总价值数目。

数据范围

0<N≤10000,
0≤Xi,Yi≤5000

  

  二维前缀和之后暴力枚举每个方形即可。两个坑点:

  1、首先要记录xi、yi的最大值n、m,将n和m作为地图右下端点的边界来枚举。由于边长没有给出范围,r有可能会大于整个地图的尺寸,因此n和m的初值要设为r。

  2、原本的地图是在格点上放置炸弹的,并且边界不能纳入爆炸范围,不好处理。我们考虑换个角度考虑问题,对地图进行转化:固定格点上的目标,把整个“棋盘”看作向右下方移动了(0.5, 0.5)个单位。这样的话,每个目标都处于移动后棋盘格子的中心,每次只要枚举一个边长为r-1的方形内的和就可以把原本方形可以炸到的目标纳入计算中。这个操作并不好想像,建议自己模拟一下来验证。

代码:

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cctype>
  4. #define rep(i, a, b) for(int i = a; i <= b; ++i)
  5. #define per(i, b, a) for(int i = b; i >= a; --i)
  6. #define maxn 5010
  7. using namespace std;
  8. int s[maxn][maxn], n, r;
  9. int main() {
  10. cin >> n >> r;
  11. int N = r, M = r, u, v, w;
  12. rep(i, 1, n) {
  13. cin >> u >> v >> w;
  14. ++u, ++v;
  15. s[u][v] += w;
  16. N = max(N, u), M = max(M, v);
  17. }
  18. rep(i, 1, N)
  19. rep(j, 1, M)
  20. s[i][j] += s[i-1][j] + s[i][j-1] - s[i-1][j-1];
  21. int ans = 0;
  22. rep(i, r, N)
  23. rep(j, r, M)
  24. ans = max(ans, s[i][j] - s[i-r][j] - s[i][j-r] + s[i-r][j-r]);
  25. cout << ans;
  26. return 0;
  27. }

【AcWing 99】激光炸弹——二维前缀和的更多相关文章

  1. BZOJ1218 [HNOI2003]激光炸弹 二维前缀和

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1218 题意概括 给出一个大的矩阵,求边长为r的正方形区域的最大sum. 题解 二维前缀和然后暴力就 ...

  2. [日常摸鱼]bzoj1218[HNOI2003]激光炸弹-二维前缀

    题意:二维网格一些格子有权值,求用边长为$r$的正方形能覆盖到格子权值和的最大值,格子大小$ \leq 5000$ 非常裸的二维前缀,然而 题目下标从0开始! QAQ 要是比赛就要爆零啦- #incl ...

  3. luogu P2280 激光炸弹(二维前缀和)

    由题给的xi, yi范围,可以建立二维地图maze[i][j],记录i j范围上的所有目标的价值总和 即有maze[xi][yi] += wi 然后接下来的目标就是求出该二维数组的前缀和 可得到前缀和 ...

  4. bzoj 1218 [HNOI2003]激光炸弹 二维前缀和

    [HNOI2003]激光炸弹 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3022  Solved: 1382[Submit][Status][Di ...

  5. Acwing-99-激光炸弹(二维前缀和)

    链接: https://www.acwing.com/problem/content/101/ 题意: 一种新型的激光炸弹,可以摧毁一个边长为 R 的正方形内的所有的目标. 现在地图上有 N 个目标, ...

  6. AcWing 99. 激光炸弹

    地图上有n个目标,用整数x,y表示目标在地图上的位置,每个目标都有一个价值Wi. 注意:不同目标可能在同一位置. 现在有一种新型的激光炸弹,可以摧毁一个包含r个位置的正方形内的所有目标. 激光炸弹的投 ...

  7. P2280 [HNOI2003]激光炸弹(二维前缀和)

    题目描述 一种新型的激光炸弹,可以摧毁一个边长为R的正方形内的所有的目标.现在地图上有n(n≤10000)个目标,用整数xi,yi(0≤xi,yi≤5000)表示目标在地图上的位置,每个目标都有一个价 ...

  8. 2018 Multi-University Training Contest 4 Problem E. Matrix from Arrays 【打表+二维前缀和】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6336 Problem E. Matrix from Arrays Time Limit: 4000/20 ...

  9. Acwing-121-赶牛入圈(二分, 二维前缀和,离散化)

    链接: https://www.acwing.com/problem/content/123/ 题意: 农夫约翰希望为他的奶牛们建立一个畜栏. 这些挑剔的畜生要求畜栏必须是正方形的,而且至少要包含C单 ...

随机推荐

  1. JUC---13各种锁

    一.公平锁与非公平锁 公平锁:加锁前检查是否有排队等待的线程,优先排队等待的线程,先来先得 非公平锁:加锁时不考虑排队等待问题,直接尝试获取锁,获取不到自动到队尾等待 非公平锁性能比公平锁高5~10倍 ...

  2. Java 运行时动态生成class

    转载 http://www.liaoxuefeng.com/article/0014617596492474eea2227bf04477e83e6d094683e0536000 Java是一门静态语言 ...

  3. 【总结】jvm

    一.jvm体系结构 1.jvm整体结构 jvm总体上是由类装载子系统(ClassLoader).运行时数据区.执行引擎三个部分组成. (jvm本质上就是一个java进程) 2.jvm生命周期 (1)j ...

  4. android 下的 handler Message

    研究了下android下的 handler  message 实现原理: new handler() 的时候  从ThreadLocal里面 获取当前线程下的 Looper实例下的 MessageQu ...

  5. requests库中的get()和post()方法

    (一)get()方法 查看源码,如下: 1 def get(self, url, params, **kwargs): 2 r"""Sends a GET request ...

  6. 【Luogu】P1072 Hankson 的趣味题 题解

    原题链接 嗯...通过标签我们易得知,这是一道数学题(废话) 其中,题目给了这两个条件: \(gcd(x,a_0)=a_1,lcm(x,b_0)=b_1\) 所以,根据 \(gcd\) 与 \(lcm ...

  7. C#4语法新特性

    C#4,.NET Framework 4.0, Visual Studio 2010  C#4.0新引进的语法基于.Net Framework 4.0.主要引进的语法:动态类型,命名参数.可选参数,优 ...

  8. java 执行shell命令及日志收集避坑指南

    有时候我们需要调用系统命令执行一些东西,可能是为了方便,也可能是没有办法必须要调用.涉及执行系统命令的东西,则就不能做跨平台了,这和java语言的初衷是相背的. 废话不多说,java如何执行shell ...

  9. .NetCore HttpClient发送请求的时候为什么自动带上了一个RequestId头部?

    奇怪的问题 最近在公司有个系统需要调用第三方的一个webservice.本来调用一个下很简单的事情,使用HttpClient构造一个SOAP请求发送出去拿到XML解析就是了. 可奇怪的是我们的请求在运 ...

  10. phpword读取内容和样式 生成新的内容

    table样式还未读出 正在测试中, 目前有 rows cell textrun等样式 顺序不固定 可以设定 <?php require 'vendor/autoload.php'; use P ...