Luogu P2280/ACAG 0x03-1 激光炸弹

这道题要用到二维前缀和。

首先读入时,令$a[x][y]=val$;

然后不难递推出$s[i][j]=s[x-1][y]+s[i][j-1]-s[i-1][j-1]+a[i][j]$。

此处运用了容斥原理。

然后再遍历答案,不难得到,对于以$(x,y)$为右下角的格子,所得的价值为:$s[x][y]-s[x-r][y]-s[x][y-r]+s[x-r][y-r]$。

当然这道题有两个点需要注意:

  1. 目标点坐标范围为$[0,5000]$,可能会取到$0$,造成数组越界。对此我们只需要在将横、纵坐标均加$1$即可。
  2. 这道题有卡空间。所以可以只开$s$数组,并累加即可。
#include<bits/stdc++.h>
#define N 5010 using namespace std; int n,r,ans;
int s[N][N]; int Calc(int x,int y) {
return s[x][y]-s[x-r][y]-s[x][y-r]+s[x-r][y-r];
} void Read() {
scanf("%d%d",&n,&r);
for(int i=1;i<=n;i++) {
int x,y,val;
scanf("%d%d%d",&x,&y,&val);
s[x+1][y+1]=val;
}
return;
} void Solve() {
for(int i=1;i<=5001;i++) {
for(int j=1;j<=5001;j++) {
s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];
}
}
for(int i=r;i<=5001;i++) {
for(int j=r;j<=5001;j++) {
ans=max(ans,Calc(i,j));
}
}
printf("%d",ans);
return;
} int main()
{
Read();
Solve();
return 0;
}

Luogu P2280/ACAG 0x03-1 激光炸弹的更多相关文章

  1. 洛谷P2280 [HNOI2003]激光炸弹

    P2280 [HNOI2003]激光炸弹 题目描述 输入输出格式 输入格式: 输入文件名为input.txt 输入文件的第一行为正整数n和正整数R,接下来的n行每行有3个正整数,分别表示 xi,yi ...

  2. P2280 [HNOI2003]激光炸弹(二维前缀和)

    题目描述 一种新型的激光炸弹,可以摧毁一个边长为R的正方形内的所有的目标.现在地图上有n(n≤10000)个目标,用整数xi,yi(0≤xi,yi≤5000)表示目标在地图上的位置,每个目标都有一个价 ...

  3. 【BZOJ-1218】激光炸弹 前缀和 + 枚举

    1218: [HNOI2003]激光炸弹 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1778  Solved: 833[Submit][Statu ...

  4. BZOJ 1218: [HNOI2003]激光炸弹 前缀DP

    1218: [HNOI2003]激光炸弹 Description 一种新型的激光炸弹,可以摧毁一个边长为R的正方形内的所有的目标.现在地图上有n(N<=10000)个目标,用整数Xi,Yi(其值 ...

  5. BZOJ 1218: [HNOI2003]激光炸弹( 前缀和 + 枚举 )

    虽然source写着dp , 而且很明显dp可以搞...但是数据不大 , 前缀和 + 枚举也水的过去..... -------------------------------------------- ...

  6. 1218: [HNOI2003]激光炸弹

    1218: [HNOI2003]激光炸弹 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1139  Solved: 542[Submit][Statu ...

  7. [HNOI 2003]激光炸弹

    Description 一种新型的激光炸弹,可以摧毁一个边长为R的正方形内的所有的目标.现在地图上有n个目标,用整数,表示目标在地图上的位置,每个目标都有一个价值.激光炸弹的投放是通过卫星定位的,但其 ...

  8. [HNOI2003]激光炸弹

    Description 一种新型的激光炸弹,可以摧毁一个边长为R的正方形内的所有的目标.现在地图上有n个目标,用整数,表示目标在地图上的位置,每个目标都有一个价值.激光炸弹的投放是通过卫星定位的,但其 ...

  9. [luogu2280][bzoj1218][HNOI2003]激光炸弹

    题目描述 一种新型的激光炸弹,可以摧毁一个边长为R的正方形内的所有的目标.现在地图上有n(N<=10000)个目标,用整数Xi,Yi(其值在[0,5000])表示目标在地图上的位置,每个目标都有 ...

随机推荐

  1. vue方法中传递dom对象示例

    <div id="app"> <input type="text" v-on:keyup="onlyNum($event)" ...

  2. Kubernetes之使用kubeadm部署

    参考:https://www.cnblogs.com/caoxb/p/11243472.html 部署虚拟机规划 192.168.1.11 k8s-master 192.168.1.12 k8s-no ...

  3. 【C/C++开发】C++之enum枚举量声明、定义、使用与枚举类详解与枚举类前置类型声明

    众所周知,C/C++语言可以使用#define和const创建符号常量,而使用enum工具不仅能够创建符号常量,还能定义新的数据类型,但是必须按照一定的规则进行,下面我们一起看下enum的使用方法. ...

  4. 创建企业级地理数据库报错:ORA-01455

    环境: Oracle Server : 11.2.0.3 (x64) Oracle Client  : 11.1.0.6 (x32) Arcgis Desktop : 10.3 在该环境下执行 &qu ...

  5. maven将Jar安装进仓库

    mvn install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.4 -Dpac ...

  6. redis常用命令及持久化机制

    redis  常用命令 查找redis服务文件 find / -name  redis-server 查找配置文件 find / -name redis.conf 启动服务时候,要指定配置文件 启动r ...

  7. 对javascript中call()方法的理解

    call ( thisObj [, arg1 [, arg2 [,  [, argN] ] ] ]) call()方法:官方介绍是,调用一个对象的一个方法,以另一个对象替换当前对象. call()方法 ...

  8. 如何理解 PHP的依赖注入(DI) 和 控制反转(IoC)

    名词解释: IoC - Inversion of Control 控制反转 DI - Dependency Injection 依赖注入 依赖注入和控制反转说的实际上是同一个东西,它们是一种设计模式, ...

  9. Python输出菱形

    最近准备熟悉下Python的基础语法,准备练习下输出菱形.刚好作为自己blog的开篇~~ n =10 #控制菱形的大小 for i in range(1, n): for j in range(int ...

  10. Linux基础(08)信号通信机制

    1.Linux中的信号(有32个)  信号会中断一些函数的阻塞 https://zhidao.baidu.com/question/1766690354480323100.html #define S ...