【算法競賽進階指南】前綴和BZOJ1218激光炸彈
阿新 • • 發佈:2018-12-02
std 前綴和 目標 操作數 int main 數據 bzoj1218 esp
題目是二維前綴和,N^2完成維護
S[i,j]=S[i-1,j]+S[i,j-1]+A[i,j],簡化操作數據直接輸入S中
題目中要註意目標的坐標,往往被包含在x+1,y+1之中
#include<cstdio> #include<algorithm> using namespace std; int f[5005][5005]; int main(){ int n,R; scanf("%d%d",&n,&R); int maxx=R,maxy=R; while(n--){ int x,y,v; scanf("%d%d%d",&x,&y,&v); x++;y++;//註意 f[x][y]+=v; maxx=max(maxx,x); maxy=max(maxy,y); } for(int i=1;i<=maxx;i++){ for(int j=1;j<=maxy;j++){ f[i][j]+=f[i-1][j]+f[i][j-1]-f[i-1][j-1]; } } int maxans=0; for(int i=R;i<=maxx;i++){ for(int j=R;j<=maxy;j++){ maxans=max(maxans,f[i][j]-f[i-R][j]-f[i][j-R]+f[i-R][j-R]); } } printf("%d",maxans); return 0; }
【算法競賽進階指南】前綴和BZOJ1218激光炸彈