iT邦幫忙

0

BZOJ1218(二维前缀和)

  • 分享至 

  • xImage
  •  

1218: [HNOI2003]激光炸弹
分析:经典的二维前缀和问题。在二维平面上,根据容斥原理,从(1,1)到(x,y)的二维前缀和https://chart.googleapis.com/chart?cht=tx&chl=S(x%2Cy)%3DS(x-1%2Cy)%2BS(x%2Cy-1)-S(x-1%2Cy)%2BA(X%2CY)。 同理,根据容斥原理,二维区间https://chart.googleapis.com/chart?cht=tx&chl=(X_1%2CY_1)https://chart.googleapis.com/chart?cht=tx&chl=(X_2%2CY_2)的前缀和就是https://chart.googleapis.com/chart?cht=tx&chl=S(X_2%2CY_2)-S(X_1%2CY_2)-S(X_2%2CY_1)%2BS(X_1%2CY_1)

#include "bits/stdc++.h"
using namespace std;
const int maxn=5e3+10;
int n,a[maxn][maxn],R;
int main()
{
    //freopen("in.txt","r",stdin);
    scanf("%d%d",&n,&R);
    for(int i=1;i<=n;i++){
        int x,y,v;
        scanf("%d%d%d",&x,&y,&v);
        a[x+1][y+1]+=v;
    }
    for(int i=1;i<=5001;i++)
        for(int j=1;j<=5001;j++)
            a[i][j]=a[i-1][j]+a[i][j-1]-a[i-1][j-1]+a[i][j];
    int mx=0;
    for(int i=R;i<=5001;i++)
        for(int j=R;j<=5001;j++)
            mx=max(mx,a[i][j]-a[i-R][j]-a[i][j-R]+a[i-R][j-R]);
    printf("%d\n",mx);
    return 0;
}

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言