• BZOJ1218 [HNOI2003] 激光炸弹


    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1218

    Description

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

    Input

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

    Output

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

    懒得写题解

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <algorithm>
     4 #include <cstring>
     5 #define rep(i,l,r) for(int i=l; i<=r; i++)
     6 #define clr(x,y) memset(x,y,sizeof(x))
     7 using namespace std;
     8 const int maxn = 5002;
     9 inline int read(){
    10     int ans = 0, f = 1;
    11     char c = getchar();
    12     for(; !isdigit(c); c = getchar())
    13     if (c == '-') f = -1;
    14     for(; isdigit(c); c = getchar())
    15     ans = ans * 10 + c - '0';
    16     return ans * f;
    17 }
    18 int n,r,x,y,z,g[maxn][maxn];
    19 int main(){
    20     n = read(); r = read(); clr(g,0);
    21     rep(i,1,n) x = read(), y = read(), z = read(), g[x+1][y+1] = z;
    22     rep(i,1,maxn-1) rep(j,1,maxn-1) g[i][j] += g[i-1][j] + g[i][j-1] - g[i-1][j-1];
    23     int ans = -1;
    24     rep(i,r,maxn-1) rep(j,r,maxn-1)
    25     ans = max(ans, g[i][j] - g[i][j-r] - g[i-r][j] + g[i-r][j-r]);
    26     printf("%d
    ",ans);
    27     return 0;
    28 }
    View Code
  • 相关阅读:
    当前页面跳转网页,新打开和在本页面打开
    文本框内按下enter键禁止换行
    排序算法
    Java实现图片的叠加与拼接
    简单工厂模式
    单例模式
    Java实现代理模式
    调用第三方接口生成短链接(五)
    调用第三方接口生成短链接(四)
    调用第三方接口生成短链接(二)
  • 原文地址:https://www.cnblogs.com/jimzeng/p/bzoj1218.html
Copyright © 2020-2023  润新知