生命(哈密尔顿距离&切比雪夫距离+前缀和)

Posted shaokele

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生命(哈密尔顿距离&切比雪夫距离+前缀和)相关的知识,希望对你有一定的参考价值。


技术分享图片

  数据

题目大意:   已经很简洁了

题解:

  对于每个询问,暴力枚举老蛤的位置,(O(1)) 统计答案
  
  那么对着原图斜着维护前缀和就行了
  
  或者将曼哈顿距离转换成切比雪夫距离
  
  统计正方形区域前缀和
  
  注意方案中枚举的老蛤的位置要再原图内


AC代码

#include <cstdio>
#include <algorithm>
using namespace std;
const int N=2e3+5;
int n,K,Q,s,ans;
int a[N][N];
inline int read(){
    int x=0;char ch=getchar();
    while(ch<'0'||ch>'9')ch=getchar();
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x;
}
int main(){
    n=read();K=read();Q=read();
    for(int i=1;i<=K;i++){
        int x=read(),y=read();
        a[x+y+1][x-y+n+1]++;
    }
    int mx=(n<<1)+1;
    for(int i=1;i<=mx;i++)
        for(int j=1;j<=mx;j++)
            a[i][j]+=a[i-1][j]+a[i][j-1]-a[i-1][j-1];
    while(Q--){
        int s=min(read(),n+n);
        ans=0;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++){
                int x=i+j+1,y=i-j+n+1;
                ans=max(ans,a[min(x+s,mx)][min(y+s,mx)]-a[min(x+s,mx)][max(y-s-1,0)]-a[max(x-s-1,0)][min(y+s,mx)]+a[max(x-s-1,0)][max(y-s-1,0)]);
            }
        printf("%d
",ans);
    }
    return 0;
}


  作者:skl_win
  出处:https://www.cnblogs.com/shaokele/
  本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

以上是关于生命(哈密尔顿距离&切比雪夫距离+前缀和)的主要内容,如果未能解决你的问题,请参考以下文章

LuoguP3964 [TJOI2013]松鼠聚会切比雪夫距离/前缀和

BZOJ_3170_[Tjoi2013]松鼠聚会_切比雪夫距离+前缀和

BZOJ 3170 & 切比雪夫距离

bzoj 3170 Tjoi 2013 松鼠聚会 曼哈顿距离&&切比雪夫距离

总结曼哈顿距离转切比雪夫距离

[BZOJ 2735]世博会 主席树 切比雪夫距离转曼哈顿距离