zoukankan      html  css  js  c++  java
  • 生命(哈密尔顿距离&切比雪夫距离+前缀和)


    p1

    数据

    题目大意:   已经很简洁了

    题解:

      对于每个询问,暴力枚举老蛤的位置,(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/
      本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Java Native Method
    SQL语句优化
    Ibatis的环境搭建以及遇到的问题解决
    Java 构建器
    SpringMVC自定义视图 Excel视图和PDF视图
    java 枚举的常见使用方法
    mysql 根据某些字段之和排序
    MFC The Screen Flickers When The Image Zoomed
    How To Debug Qmake Pro File
    Gcc And MakeFile Level1
  • 原文地址:https://www.cnblogs.com/shaokele/p/9464107.html
Copyright © 2011-2022 走看看