博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷 题解 P2280 【[HNOI2003]激光炸弹】
阅读量:6358 次
发布时间:2019-06-23

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

一道很好的二维前缀和模板题。

什么是二维前缀和?

404

从这张图可以看出前缀和的求法:

Map[i][j]=Map[i-1][j]+Map[i][j-1]-Map[i-1][j-1]+Map[i][j];

这道题的代码:

#include
using namespace std;const int MAXN=5000+10;int n,r;int Map[MAXN][MAXN];//数组开的下inline int read(){ int tot=0; char c=getchar(); while(c<'0'||c>'9') c=getchar(); while(c>='0'&&c<='9') { tot=tot*10+c-'0'; c=getchar(); } return tot;}int main(){ int x,y,v; n=read();r=read(); for(int i=1;i<=n;i++) { x=read();y=read();v=read(); Map[x+1][y+1]=v; } for(int i=1;i<=5000;i++)//因为地图最大是5000*5000的 for(int j=1;j<=5000;j++) Map[i][j]=Map[i-1][j]+Map[i][j-1]-Map[i-1][j-1]+Map[i][j];//求出这张图的二维前缀和 int ans=0; for(int i=0;i<=5000-r;i++) for(int j=0;j<=5000-r;j++)//放置炸弹的范围,要减去边长,否则肯定不是最优的 ans=max(ans,Map[i+r][j+r]-Map[i][j+r]-Map[i+r][j]+Map[i][j]);//先找到爆炸范围中的总价值,再取最大值 cout<
<

转载于:https://www.cnblogs.com/hulean/p/10813434.html

你可能感兴趣的文章
Mac 搭建svn服务器环境
查看>>
HBase1.0.2版基本命令
查看>>
屏幕颠倒和文件扩展名部分隐藏问题+Outlook页边距的解决+几个Excel
查看>>
Nginx基础入门之nginx基本介绍(2)
查看>>
面试宝典系列-为什么要做持续集成
查看>>
memcpy,_tcscpy_s的使用
查看>>
远程唤醒基础知识
查看>>
简述 Docker
查看>>
如何将ppt转成pdf
查看>>
中科红旗社区招聘
查看>>
TensorFlow人工智能引擎入门教程之八 接着补充一章MLP多层感知器网络原理以及 使用...
查看>>
postgresql 批量插入测试数据
查看>>
乌云章华鹏:如何构建高效安全的运维服务平台
查看>>
Description Resource Path Location Type Java compiler level does not match the version of the in...
查看>>
Xcode搜索功能无效
查看>>
又是一天
查看>>
Java基本数据类型及类型转换
查看>>
事件处理和手势操作
查看>>
JS日常编码的一些小坑
查看>>
Android基于XMPP Smack Openfire开发IM(2)登录openfire
查看>>