AcWing:99. 激光炸弹(前缀和)
一种新型的激光炸弹,可以摧毁一个边长为 RR 的正方形内的所有的目标。
现在地图上有 NN 个目标,用整数Xi,YiXi,Yi表示目标在地图上的位置,每个目标都有一个价值WiWi。
激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆炸范围,即那个边长为 RR 的正方形的边必须和x,yx,y轴平行。
若目标位于爆破正方形的边上,该目标不会被摧毁。
求一颗炸弹最多能炸掉地图上总价值为多少的目标。
输入格式
第一行输入正整数 NN 和 RR ,分别代表地图上的目标数目和正方形的边长,数据用空格隔开。
接下来NN行,每行输入一组数据,每组数据包括三个整数Xi,Yi,WiXi,Yi,Wi,分别代表目标的xx坐标,yy坐标和价值,数据用空格隔开。
输出格式
输出一个正整数,代表一颗炸弹最多能炸掉地图上目标的总价值数目。
数据范围
0<N≤100000<N≤10000,
0≤Xi,Yi≤50000≤Xi,Yi≤5000
输入样例:
2 1
0 0 1
1 1 1
输出样例:
1
算法:前缀和
题解:利用前缀和来求解,算出每个位置的前缀和值来,利用前缀和的减法操作,来求得你需要取得区间,然后遍历得到最大值。
#include <iostream>
#include <cstdio> using namespace std; const int maxn = 5e3+; int arr[maxn][maxn];
int b[maxn]; int main() {
int n, m;
scanf("%d %d", &n, &m);
int row = m, col = m;
for(int i = ; i <= n; i++) {
int u, v, w;
scanf("%d %d %d", &u, &v, &w);
u++;
v++;
arr[u][v] = w;
row = max(row, u);
col = max(col, v);
}
for(int i = ; i <= row; i++) {
for(int j = ; j <= col; j++) {
b[j] = b[j - ] + arr[i][j]; //此行的前缀和数组
arr[i][j] = arr[i - ][j] + b[j]; //上一行当前位置的前缀和加上此行当前位置的前缀和
}
}
int ans = ;
for(int i = m; i <= row; i++) {
for(int j = m; j <= col; j++) {
ans = max(ans, arr[i][j] - arr[i - m][j] - arr[i][j - m] + arr[i - m][j - m]); //当前位置的前缀和减去前面多余的部分
}
}
cout << ans << endl;
return ;
}
AcWing:99. 激光炸弹(前缀和)的更多相关文章
- AcWing 99. 激光炸弹
地图上有n个目标,用整数x,y表示目标在地图上的位置,每个目标都有一个价值Wi. 注意:不同目标可能在同一位置. 现在有一种新型的激光炸弹,可以摧毁一个包含r个位置的正方形内的所有目标. 激光炸弹的投 ...
- acwing刷题--激光炸弹--前缀和(后期会有优化做法)
地图上有 N 个目标,用整数 Xi,Yi 表示目标在地图上的位置,每个目标都有一个价值 Wi. 注意:不同目标可能在同一位置. 现在有一种新型的激光炸弹,可以摧毁一个包含 R×R 个位置的正方形内的所 ...
- 【BZOJ-1218】激光炸弹 前缀和 + 枚举
1218: [HNOI2003]激光炸弹 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1778 Solved: 833[Submit][Statu ...
- BZOJ 1218: [HNOI2003]激光炸弹( 前缀和 + 枚举 )
虽然source写着dp , 而且很明显dp可以搞...但是数据不大 , 前缀和 + 枚举也水的过去..... -------------------------------------------- ...
- BZOJ 1218: [HNOI2003]激光炸弹 前缀DP
1218: [HNOI2003]激光炸弹 Description 一种新型的激光炸弹,可以摧毁一个边长为R的正方形内的所有的目标.现在地图上有n(N<=10000)个目标,用整数Xi,Yi(其值 ...
- 洛谷P2280 [HNOI2003] 激光炸弹 [前缀和]
题目传送门 题目描述 输入输出格式 输入格式: 输入文件名为input.txt 输入文件的第一行为正整数n和正整数R,接下来的n行每行有3个正整数,分别表示 xi,yi ,vi . 输出格式: 输出文 ...
- P2280 [HNOI2003]激光炸弹[前缀和]
题目描述 输入输出格式 输入格式: 输入文件名为input.txt 输入文件的第一行为正整数n和正整数R,接下来的n行每行有3个正整数,分别表示 xi,yi ,vi . 输出格式: 输出文件名为out ...
- 【AcWing 99】激光炸弹——二维前缀和
(题面来自AcWing) 一种新型的激光炸弹,可以摧毁一个边长为 R 的正方形内的所有的目标. 现在地图上有 N 个目标,用整数Xi,Yi表示目标在地图上的位置,每个目标都有一个价值Wi. 激光炸弹的 ...
- P2280 [HNOI2003]激光炸弹(二维前缀和)
题目描述 一种新型的激光炸弹,可以摧毁一个边长为R的正方形内的所有的目标.现在地图上有n(n≤10000)个目标,用整数xi,yi(0≤xi,yi≤5000)表示目标在地图上的位置,每个目标都有一个价 ...
随机推荐
- oracle建表详细信息
一张用户表 -- Create table create table OA_DM.DM_GY_USER ( ), username ) not null, loginname ) not null, ...
- JavaScript设计模式(装饰者模式)
一.模拟传统面向对象语言的装饰者模式: 假设我们在编写一个飞机大战的游戏,随着经验值的增加,我们操作的飞机对象可以升级成更厉害的飞机,一开始这些飞机只能发射普通的子弹,升到第二级时可以发射导弹,升到第 ...
- asp.net 9 ViewState
VIEWSTATE aspx: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=&quo ...
- javascript立体学习指南
javascript立体学习指南第一章:首先了解javascript 首先,什么是javascript? JavaStrip出生于1995年,是一种文本脚本语言,成都装修公司是一种动态的.弱类型的.基 ...
- 1 asp.net 中如何把用户控件应用于母版页
1 创建用户控件 2 在母版页中注册用户控件 3 使用 <%@ Master Language="C#" AutoEventWireup="true" C ...
- <%%> <%! %> <%=%> <%-- --%> jsp中jstl一些运用
<%%> 这里面可以添加java代码片段<%! %> 这里添加java方法 主要是用来声明变量的 <%=%> 将变量或表达式值输出到页面<%-- --%> ...
- ChinaCock扫描控件介绍-使用TCCBarcodeScanner引起app闪退
好几个ChinaCock的朋友说遇到扫码时闪退,进一步总结,都是Android 8的机器上才会出现,今天我也遇到.正好有朋友说,按下面这个改配置文件就可以解决: <!-- 扫描的activity ...
- ubuntu16.04 安装go
1.sudo add-apt-repository ppa:gophers/go 2.apt-get update 3.apt-get install golang 完成
- Raspberrypi 安装完MySQL之后登录不了(ERROR 1698 (28000))
1.问题原因: 出现这是错误是因为 mysql 默认的 root 用户使用了 UNIX auth_socket_plugin 的用户认证方式,我们有下面两种方式处理问题: 修改 root 用户认证方式 ...
- 解决Chrome无法安装CRX离线插件
解释说明: 谷歌浏览器Chrome,版本号67.0.3396.99,自这个版本后的Chrome,手动拖放插件文件crx到谷歌浏览器,这种安装插件的方式,一定会失败,它会提示“无法从该网站添加应用,扩展 ...