zoukankan      html  css  js  c++  java
  • [HNOI 2003]激光炸弹

    Description

    一种新型的激光炸弹,可以摧毁一个边长为R的正方形内的所有的目标。现在地图上有n个目标,用整数表示目标在地图上的位置,每个目标都有一个价值。激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆破范围,即那个边长为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

    题解

    嗯...我们先想一个$O(N^2)$的暴力...

    求出二维前缀和...然后再枚举所有的右上端点...嗯...考虑到$X,Y<=5000$...那么这道题就做完了...

    emmmmmm........................

     1 //It is made by Awson on 2017.10.8
     2 #include <map>
     3 #include <set>
     4 #include <cmath>
     5 #include <ctime>
     6 #include <queue>
     7 #include <stack>
     8 #include <vector>
     9 #include <cstdio>
    10 #include <string>
    11 #include <cstdlib>
    12 #include <cstring>
    13 #include <iostream>
    14 #include <algorithm>
    15 #define query QUERY
    16 #define LL long long
    17 #define Max(a, b) ((a) > (b) ? (a) : (b))
    18 #define Min(a, b) ((a) < (b) ? (a) : (b))
    19 using namespace std;
    20 const int N = 5000;
    21 void read(int &x) {
    22     char ch; bool flag = 0;
    23     for (ch = getchar(); !isdigit(ch) && ((flag |= (ch == '-')) || 1); ch = getchar());
    24     for (x = 0; isdigit(ch); x = (x<<1)+(x<<3)+ch-48, ch = getchar());
    25     x *= 1-2*flag;
    26 }
    27 
    28 int n, r, x, y, v;
    29 int mp[N+5][N+5];
    30 
    31 void work() {
    32     read(n), read(r);
    33     for (int i = 1; i <= n; i++) {
    34         read(x), read(y), read(v);
    35         mp[x+1][y+1] = v;
    36     }
    37     for (int i = 1; i <= N+1; i++)
    38         for (int j = 1; j <= N+1; j++)
    39             mp[i][j] += mp[i][j-1]+mp[i-1][j]-mp[i-1][j-1];
    40     int ans = 0; 
    41     for (int i = r; i <= N+1; i++)
    42         for (int j = r; j <= N+1; j++)
    43             ans = Max(ans, mp[i][j]-mp[i-r][j]-mp[i][j-r]+mp[i-r][j-r]);
    44     printf("%d
    ", ans);
    45 }
    46 int main() {
    47     work();
    48     return 0;
    49 }
  • 相关阅读:
    c#中的对象生命周期
    数据抓取的艺术(三):抓取Google数据之心得
    redmine3.3.0安装问题
    wget 无法建立ssl连接 [ERROR: certificate common name ?..ssl.fastly.net?.doesn?. match requested host name ?.ache.ruby-lang.org?. To connect to cache.ruby-lang.org insecurely, use ?.-no-check-certificate?]
    Centos安装ruby
    Redmine插件的安装与卸载,知识库插件安装。
    Nexus网页直接上传jar包
    mvn deploy命令上传包
    一辈子只有1次成为BAT的机会,你如何把握?
    redmine创建新闻,自动发邮件给项目组所有成员
  • 原文地址:https://www.cnblogs.com/NaVi-Awson/p/7638898.html
Copyright © 2011-2022 走看看