• 1218: [HNOI2003]激光炸弹


    Time Limit: 10 Sec  Memory Limit: 162 MB
    Submit: 4256  Solved: 1814
    [Submit][Status][Discuss]

    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
     
    x,y<=5000???
    数据小到可以直接暴力
    利用容斥原理,进行二维前缀和处理,暴力枚举矩阵
     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 
     5 int n,r,ans;
     6 int f[5005][5005];
     7 
     8 int main()
     9 {
    10     scanf("%d%d",&n,&r);
    11     for(int i=1;i<=n;i++)
    12     {
    13         int x,y,v;
    14         scanf("%d%d%d",&x,&y,&v);
    15         f[x+1][y+1]=v;
    16     }
    17     for(int i=1;i<=5001;i++)
    18         for(int j=1;j<=5001;j++)
    19             f[i][j]=f[i-1][j]+f[i][j-1]-f[i-1][j-1]+f[i][j];
    20     for(int i=r;i<=5001;i++)
    21         for(int j=r;j<=5001;j++)
    22             ans=max(ans,f[i][j]-f[i-r][j]-f[i][j-r]+f[i-r][j-r]);
    23     printf("%d",ans);
    24     return 0;
    25 }

  • 相关阅读:
    iOS 开发笔记-获取某个APP素材
    iOS UI基础-15.0 UIWebView
    iOS UI基础-14.0 DatePicker
    iOS UI基础-13.0 数据存储
    iOS UI基础-12.0 Storyboard
    iOS UI基础-11.0 UINavigationController
    iOS UI基础-10.0 QQ聊天布局之键盘及文本使用
    iOS 开发技巧总结
    iOS 设计模式-NSNotificationCenter 通知中心
    iOS UI基础-9.2 UITableView 简单微博列表
  • 原文地址:https://www.cnblogs.com/InWILL/p/9955112.html
Copyright © 2020-2023  润新知