[HNOI2003]激光炸弹

[HNOI2003]激光炸弹

http://www.nowcoder.com/questionTerminal/3df864279f5f4c03b809961f6815f165

题解写重了 参考https://blog.nowcoder.net/n/62b1d5cfab0647cbae38a868fdd0e713
本题图片说明
图片说明
按上图
设置M[i][j]记录以(1,1)为左上角端点 以(i,j)为右下角端点的矩形
大矩形=红色矩形+青色矩形-黑色重叠矩形+(i,j)点的数值
不难发现 按M[i][j]=M[i-1][j]+M[i][j-1]-M[i-1][j-1]+a[i][j]前缀即可
接下来直接枚举左上角(i,j)边长为k的正方形
M[i+k-1][j+k-1]-M[i+k-1][j-1]-M[i-1][j+k-1]+M[i-1][j-1]
注意细节 比如边界

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=5e3+7;
int  a[maxn][maxn];
int  M[maxn][maxn]={0};
int main()
{
  int  n,k;
  scanf("%d%d",&n,&k);
  memset(M,0,sizeof(M));
  int l=k,r=k;///这个很重要,最小的边界范围
  for (int i=0;i<n;++i)
  {
    int x,y,t;
    scanf("%d%d%d",&x,&y,&t);
    l=max(l,x+1);///寻找边界
    r=max(r,y+1);///寻找边界
    a[x+1][y+1]=t;
  }
  for (int i=1;i<=l;++i)
  {
    for (int j=1;j<=r;++j)
    {
        M[i][j]=M[i-1][j]+M[i][j-1]-M[i-1][j-1]+(a[i][j]);
    }
  }

  int  cnt=0;
  for (int i=1;i<=l-k+1;++i)///注意边界条件 只要l-i+1<=k即可
  {
    for (int j=1;j<=r-k+1;++j)///注意边界条件 只要r-i+1<=k即可
    {

      if (M[i+k-1][j+k-1]-M[i+k-1][j-1]-M[i-1][j+k-1]+M[i-1][j-1])///是i+k-1并非i+k 
    ///因为是从M[k]枚举到M[l]  
      {
        cnt=max(cnt,M[i+k-1][j+k-1]-M[i+k-1][j-1]-M[i-1][j+k-1]+M[i-1][j-1]);
      }
    }
  }
  printf("%d\n",cnt);
  return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
2025-12-03 11:33
能赢到发光发热​:我被平均了,谁给我补差价?
点赞 评论 收藏
分享
昨天 00:12
已编辑
香港大学 Java
这里没熟人,吐槽一下吧,楼主语文不太好,语句可能不太通顺,想到哪说到哪。我只想说字节,你太狠了。。。作为一个校招生,字节landing实在是地狱级别,来到字节已经一个月了,在这一个月里,每天都承受着巨大的压力,每天起床感觉胸闷气短,饭也吃不下,一个月已经瘦了五六斤了(也算是变相减肥了),一想到上班就莫名其妙地喘不过气来,闭上眼脑子里都是代码。压力一方面来自于mt的压力,一方面是自己的压力。我参与的项目是几个月的新项目,项目很多不完善的地方,业务流程不完善,很多代码需要根据做产品的需求做大改动,而楼主从来没有做过业务方面的编码,所以在理解业务需求的时候,非常难受,而且业务线很长,作为承接上下游的中间系统,不仅要了解自己项目的流程,还要了解上下游的流程,导致上手非常困难,也有可能是楼主太菜了QAQ。。楼主12.17入职,一周之内就已经开始做需求了,第一个需求就是新增和修改数据,mt美名其曰给我练手,但是一个小小的新增和修改涉及了太多细节,在字段定义不明确、数据来源不了解、处理流程不清晰的情况下,楼主花了一周时间完成了这个需求,当然做技术方案评审的时候,被吊了好几次,修改了几版方案。需求做完,被测试找出来十几个缺陷,每天不是在修bug,就是在修bug的路上,修bug修的精疲力尽,每天自测都需要花费很长时间,导致lz每天都十分紧张,不敢打开飞书,生怕又收到QA的信息,并且产品设计及其粗糙,很多地方都需要再三确认,严重拖慢进度。好不容易做完还被嫌进度太慢,下一个需求就让我开天辟地,完成整个业务流程的编码,lz真的直冒汗啊啊啊,真把我当老员工对待啊。最重要的一点,mt从来不给正反馈,每次问问题都会被反问,这个流程你真的理解了么,这个需求你认真思考了么,站在用户角度思考了么,站在产品角度思考了么,站在前端角度思考了么,站在QA角度思考了么,总之得不到什么有用的回复,每次问问题都是煎熬,从来得不到肯定的回复,要不就是反问,要不就是让lz去问产品,去和其他人对齐,每次都不被肯定的滋味真的很难受,导致lz现在不敢问问题,生怕再被吊,真的难受啊啊。顺便说一嘴,字节的福利是真的好,饭菜也很好吃(虽然我不大能吃得下)。今天11点刚到家,洗漱完上床已经快12点了,今天先写到这里吧,给自己留半小时抖音时间,毕竟只有睡前的时间是属于自己的。世界是个巨大的围城,有人想进来,有人想出去,不正真体验过不知道自己想要的到底是什么。。加油吧。
喵_coding:唉 进不去的挤破头都想进去 进去了的又真觉得很累 这个世界究竟怎么了
工作压力大怎么缓解
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务