zoukankan      html  css  js  c++  java
  • POJ 2029

    二维树状数组可解此题

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #define lowbit(x) (x)&(-x)
    
    using namespace std;
    int sum[105][105],k,n,m;
    int W,H;
    
    void gp(int x,int y){
    	int t;
    	for(;x<=n;x+=lowbit(x))
    	    for(t=y;t<=m;t+=lowbit(t))
    	      sum[x][t]+=1;
    }
    
    int gs(int x,int y){
      int s=0,t;
      for(;x;x-=lowbit(x))
        for(t=y;t;t-=lowbit(t))
          s+=sum[x][t];
      return s;
    }
    
    int gst(int x1,int y1,int x2,int y2){
    	return gs(x2,y2)-gs(x1-1,y2)-gs(x2,y1-1)+gs(x1-1,y1-1);
    }
    
    int main(){
    	int s,h; int maxt;
    	while(scanf("%d",&k),k){
    		maxt=-1;
    		memset(sum,0,sizeof(sum));
    		scanf("%d%d",&n,&m);
    		for(int i=1;i<=k;i++){
    			scanf("%d%d",&s,&h);
    			gp(s,h);
    		}
    		scanf("%d%d",&W,&H);
    		for(int i=1;i<=n;i++){
    			for(int j=1;j<=m;j++){
    				maxt=max(maxt,gst(i-W<=0?1:(i-W+1),j-H<=0?1:(j-H+1),i,j));
    			}
    		}
    		printf("%d
    ",maxt);
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    【Linux】【Chrome】安装Chrome浏览器的攻略
    ubuntu下安装程序的三种方法
    scala学习笔记
    安装scala
    安装java
    Python学习笔记
    Linux安装python
    软件测试笔记
    Linux安装微信
    PUTTY学习
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/3930710.html
Copyright © 2011-2022 走看看