• bzoj1218[HNOI2003]激光炸弹


    bzoj1218[HNOI2003]激光炸弹

    题意:

    坐标系上有n个目标,每个目标有一个价值,现在求一个边与坐标轴平行,边长为R的正方形,使在其内部(原题是不包括边界,然而实际上不是这样)的目标价值最大。

    题解:

    预处理一下以横纵坐标为节点的二维前缀和,然后枚举正方形右上角坐标即可。注意可以将坐标系向右上移动一个单位使前缀和不用考虑负数。反思:蒟蒻好弱啊,枚举时i和j的边界都应该是所以节点横坐标最大值与纵坐标最大值的最大值。蒟蒻一开始没注意到这一点,以为自己预处理写错。改来改去,WA来WA去。最后对着标程一点点改才发现问题。QAQ

    代码:

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #define maxn 5500
     5 #define inc(i,j,k) for(int i=j;i<=k;i++)
     6 using namespace std;
     7 
     8 int sum[maxn][maxn],n,mxxy,r,mx;
     9 int main(){
    10     scanf("%d%d",&n,&r); mxxy=mx=0;
    11     inc(i,1,n){
    12         int x,y,z; scanf("%d%d%d",&x,&y,&z); x++; y++;
    13         mxxy=max(mxxy,x); mxxy=max(mxxy,y); sum[x][y]+=z;
    14     }
    15     inc(i,1,mxxy)inc(j,1,mxxy)
    16         sum[i][j]+=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1];
    17     inc(i,r,mxxy)inc(j,r,mxxy)
    18         mx=max(mx,sum[i][j]-sum[i][j-r]-sum[i-r][j]+sum[i-r][j-r]);
    19     printf("%d",mx); return 0;
    20 }

    20160602

  • 相关阅读:
    计算户数
    日期时间时区函数(Power Query 之 M 语言)
    调用用友u8凭证控件
    用友u8应收,应付,收款,付款导入工具
    用友二次开发之自动调拔
    用友二次开发之发货单辅助工具
    用友t+报表之CS开发
    导出jar包
    论不断变化的词和句
    别说欧式中文!
  • 原文地址:https://www.cnblogs.com/YuanZiming/p/5689449.html
Copyright © 2020-2023  润新知