zoukankan      html  css  js  c++  java
  • P2280 [HNOI2003]激光炸弹

    由于正方形边上的目标不会摧毁,所以如果按照左图的形式来投放炸弹,实际只能摧毁((R-1) imes(R-1))个点,但如果按照右图的形式来投放炸弹,则能摧毁(R imes 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
    ",res);
    	
    	return 0;
    }
    
  • 相关阅读:
    asp.net读取/导入project(mpp)文件
    hdu2103
    hdu2100(大数加)
    hdu1406
    hdu1249
    hdu1038
    hdu2565
    hdu1203
    zoj3501
    hdu2102
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14557044.html
Copyright © 2011-2022 走看看