zoukankan      html  css  js  c++  java
  • BZOJ 1218: [HNOI2003]激光炸弹 (二维前缀和)

    1218: [HNOI2003]激光炸弹

    Description

    一种新型的激光炸弹,可以摧毁一个边长为R的正方形内的所有的目标。现在地图上有n(N<=10000)个目标,用整数Xi,Yi(其值在[0,5000])表示目标在地图上的位置,每个目标都有一个价值。激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆破范围,即那个边长为R的正方形的边必须和x,y轴平行。若目标位于爆破正方形的边上,该目标将不会被摧毁。 

    Input

    输入文件的第一行为正整数n和正整数R,接下来的n行每行有3个正整数,分别表示xi,yi,vi

    Output

    输出文件仅有一个正整数,表示一颗炸弹最多能炸掉地图上总价值为多少的目标(结果不会超过32767)。

    Sample Input

    2 1

    0 0 1

    1 1 1

    Sample Output

    1

     

    思路:积一个二维前缀和枚举下矩阵刷新最值就好了......

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<algorithm>
     6 #include<map>
     7 #include<set>
     8 #include<vector>
     9 #include<queue>
    10 #include<stack>
    11 #include<list>
    12 //#include<unordered_map>
    13 using namespace std;
    14 #define ll long long 
    15 const int mod=1e9+7;
    16 const int inf=1e9+7;
    17  
    18 const int maxn=5e3;
    19  
    20 int sum[maxn+10][maxn+10]; 
    21  
    22 int main()
    23 {
    24     ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    25      
    26     int n,r;
    27      
    28     cin>>n>>r;
    29     int x,y,w;
    30      
    31     int mn=-1;
    32     for(int i=0;i<n;i++)
    33     {
    34         cin>>x>>y>>w;
    35         x++;
    36         y++;
    37         mn=max(mn,x);
    38         mn=max(mn,y);
    39         sum[x][y]=w;
    40     }
    41      
    42     for(int i=1;i<=mn;i++)
    43     {
    44         for(int j=1;j<=mn;j++)
    45         {
    46             sum[i][j]+=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1];
    47         }
    48     }
    49      
    50     int maxx=-1;
    51      
    52     for(int i=r;i<=mn;i++)
    53     {
    54         for(int j=r;j<=mn;j++)
    55         {
    56             maxx=max(maxx,sum[i][j]-sum[i-r][j]-sum[i][j-r]+sum[i-r][j-r]);
    57         }
    58     }
    59      
    60     cout<<maxx<<endl;
    61      
    62     return 0;
    63 }
    大佬见笑,,
  • 相关阅读:
    移动零【283】
    下一个排列【31】
    插入区间【57】
    有效的山脉数组【941】
    两个数组的交集【349】
    求根到叶子节点数字之和【129】
    解决已经pip 安装成功的第三方包,但总是标红或者运行报错import PendingDeprecationWarning
    String、StringBuffer与StringBuilder之间区别
    《Java 核心技术第 10 版》-- 读书笔记
    【转载】如何保证消息不被重复消费?
  • 原文地址:https://www.cnblogs.com/xwl3109377858/p/11286039.html
Copyright © 2011-2022 走看看