zoukankan      html  css  js  c++  java
  • 99. 激光炸弹

    题目链接:

    https://www.acwing.com/problem/content/101/

    题解:

    边界问题最复杂,画图好好模拟一下,二维前缀和还是比较容易的

    枚举的所有的边长为R的正方形,AC代码是枚举的正方形的左上端点。

    AC代码:

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <iostream>
    
    using namespace std;
    
    int const N = 5010;
    
    int s[N][N];
    int xm,ym;
    int r;
    
    
    int main(void){
        int n,r;
        int x,y,w;
        scanf("%d%d",&n,&r);
        
        r = min(5001,r);
        xm = ym = 5000;
        while(n--){
            scanf("%d%d%d",&x,&y,&w);
            x++;y++;
            s[x][y] = w;
        }
    
        
        for(int i=1;i<=xm;i++){
            for(int j=1;j<=ym;j++){
                s[i][j] = s[i-1][j] + s[i][j-1] - s[i-1][j-1] + s[i][j];
            }
        }
        
        
        int res = 0;
        for(int i=1;i+r-1<=xm;i++){
            for(int j=1;j+r-1<=ym;j++){
                int x1 = i,y1 = j;
                int x2 = i+r-1,y2= j+r-1;
                int sum = s[x2][y2] - s[x1-1][y2] - s[x2][y1-1] + s[x1-1][y1-1];
                res = max(sum,res);
            }
        }
        
        printf("%d
    ",res);
        return 0;
    }
  • 相关阅读:
    OC
    OC
    OC
    OC
    OC
    Oracle wm_concat()函数
    字符串拼接
    easyui扩展数据表格点击加号拓展
    子tab里面新增tab(top.jQuery)
    combox datagrid重复请求问题
  • 原文地址:https://www.cnblogs.com/doubest/p/12276122.html
Copyright © 2011-2022 走看看