博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解题报告 『[HNOI2003]激光炸弹(前缀和)』
阅读量:5267 次
发布时间:2019-06-14

本文共 1268 字,大约阅读时间需要 4 分钟。

前缀和水题,没什么好讲的,注意横纵坐标加1。

另外此题空间有点紧。

 

代码实现如下:

#include 
using namespace std;#define rep(i, a, b) for (register int i = (a); i <= (b); i++)const int maxn = 5e3 + 5;int n, m, N, R;int a[maxn][maxn];int MAX(int a, int b) {
return a > b ? a : b;}int read() { int x = 0, flag = 0; char ch = ' '; while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar(); if (ch == '-') { flag = 1; ch = getchar(); } while (ch >= '0' && ch <= '9') { x = (x << 1) + (x << 3) + (ch ^ '0'); ch = getchar(); } return flag ? -x : x;}void write(int x) { if (x < 0) { putchar('-'); x = -x; } if (x > 9) write(x / 10); putchar(x % 10 + '0');}int main() { N = read(), R = read(); n = R, m = R; rep(i, 1, N) { int x, y, w; x = read(), y = read(), w = read(); x++, y++; a[x][y] = w; n = MAX(n, x); m = MAX(m, y); } rep(i, 1, n) rep(j, 1, m) a[i][j] += a[i - 1][j] + a[i][j - 1] - a[i - 1][j - 1]; int ans = 0; rep(i, R, n) rep(j, R, m) ans = MAX(ans, a[i][j] - a[i - R][j] - a[i][j - R] + a[i - R][j - R]); write(ans); return 0;}
View Code

转载于:https://www.cnblogs.com/Kirisame-Marisa/p/11200114.html

你可能感兴趣的文章
Windows 环境下基于 Redis 的 Celery 任务调度模块的实现
查看>>
趣谈Java变量的可见性问题
查看>>
C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
查看>>
ssm框架之将数据库的数据导入导出为excel文件
查看>>
语音识别中的MFCC的提取原理和MATLAB实现
查看>>
验证组件FluentValidation的使用示例
查看>>
0320-学习进度条
查看>>
解决windows系统的oracle数据库不能启动ora-00119和ora-00130的问题
查看>>
ip相关问题解答
查看>>
MetaWeblog API Test
查看>>
反弹SHELL
查看>>
关闭Chrome浏览器的自动更新和升级提示
查看>>
移动、尺寸改变
查看>>
poj2255Tree Recovery【二叉树重构】
查看>>
tcpcopy 流量复制工具
查看>>
vue和react的区别
查看>>
第十一次作业
查看>>
负载均衡策略
查看>>
微信智能开放平台
查看>>
ArcGIS Engine 中的绘制与编辑
查看>>