标签:d% int max 激光 times ++ HNOI2003 摧毁 P2280
由于正方形边上的目标不会摧毁,所以如果按照左图的形式来投放炸弹,实际只能摧毁\((R-1)\times(R-1)\)个点,但如果按照右图的形式来投放炸弹,则能摧毁\(R\times R\)个目标,题目要求摧毁总价值最大的边长为\(R\)的正方型区域,显然按右图的形式来计算。
采用二维前缀和计算。
const int N=5010;
int s[N][N];
int n,m;
int main()
{
int T,r;
cin>>T>>r;
n=m=r;
while(T--)
{
int x,y,w;
scanf("%d%d%d",&x,&y,&w);
x++,y++;
n=max(x,n),m=max(m,y);
s[x][y]+=w;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];
int res=0;
for(int i=r;i<=n;i++)
for(int j=r;j<=m;j++)
res=max(res,s[i][j]-s[i-r][j]-s[i][j-r]+s[i-r][j-r]);
printf("%d\n",res);
return 0;
}
标签:d%,int,max,激光,times,++,HNOI2003,摧毁,P2280 来源: https://www.cnblogs.com/fxh0707/p/14557044.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。