栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

寒假训练热身赛前后缀----激光炸弹

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

寒假训练热身赛前后缀----激光炸弹

系列文章目录 寒假训练热身赛

前后缀----激光炸弹

文章目录
  • 系列文章目录
  • 一、题目
  • 二、代码


前言 一、题目

二、代码

代码如下(示例):

#include  
#include  
using namespace std; 
int a[5005][5005]; 
int main() 
{ 
     int x,y; 
     int n,r,xi,yi,vi,i,j,sum=0;
     cin >> n >> r; 
     r=min(r,5001);//因为炸5000*5000范围,r太大无用,因为从(x,y)开始方便计算
     x=y=r;//确定炸的范围
    while(n--)
 {
    cin >> xi >> yi >> vi; 
   xi++,yi++; 
   a[xi][yi]+=vi;
     x=max(x,xi); 
    y=max(y,yi);//确定右下角(x,y);当r不足以覆盖全图时
 } 
     for(i=1;i<=x;i++) 
       for(j=1;j<=y;j++)
 { 
      a[i][j]=a[i-1][j]+a[i][j-1]-a[i-1][j-1]+a[i][j];//将原来的数组转化为前缀和数组//预处理状态转移方程为(Dp[i][j]=Dp[i-1][j]+Dp[i][j-1]-Dp[i-1][j-1]+map[i][j])
 } 
   for(i=r;i<=x;i++)
     for(j=r;j<=y;j++) 
{                                                                                                                            
     sum=max(sum,a[i][j]-a[i-r][j]-a[i][j-r]+a[i-r][j-r]);//i,j表示的是矩形的右下角,i-r,j-r表示的是左上角
} 
      cout < 
  

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/698835.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号