zoukankan      html  css  js  c++  java
  • HDU6514 Monitor(二维前缀和)

    这道题的原理是普通的二维差分和二维前缀和,但是因为不能开二维数组,因此映射到一维就行

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N=1e7+10;
    const int mod=1e9+7;
    int a[N];
    int sum[N];
    int n,m;
    void add(int x1,int y1,int x2,int y2,int val=1){
        a[(x1)*n+y1]+=val;
        a[(x2+1)*n+y2+1]+=val;
        a[(x1)*n+y2+1]-=val;
        a[(x2+1)*n+y1]-=val;
    }
    void modify(){
        for(int i=1;i<=m;i++){
            for(int j=1;j<=n;j++){
                a[(i)*n+j]+=a[(i)*n+j-1]+a[(i-1)*n+j]-a[(i-1)*n+j-1];
            }
        }
        for(int i=1;i<=m;i++){
            for(int j=1;j<=n;j++){
                if(a[i*n+j]>0)
                    sum[(i)*n+j]=sum[(i)*n+j-1]+sum[(i-1)*n+j]-sum[(i-1)*n+j-1]+1;
            }
        }
    }
    int query(int x1,int y1,int x2,int y2){
        return sum[x2*n+y2]-sum[x2*n+y1-1]-sum[(x1-1)*n+y2]+sum[(x1-1)*n+y1-1];
    }
    int main(){
        //ios::sync_with_stdio(false);
        while(~scanf("%d%d",&m,&n)){
            int i,j;
            for(i=0;i<=n*m+1;i++){
                a[i]=0;
                sum[i]=0;
            }
            int p;
            scanf("%d",&p);
            for(i=1;i<=p;i++){
                int x1,y1,x2,y2;
                scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
                add(x1,y1,x2,y2);
            }
            modify();
            int q;
            scanf("%d",&q);
            while(q--){
                int x1,y1,x2,y2;
                scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
                int tmp=(x2-x1+1)*(y2-y1+1);
                if(tmp==query(x1,y1,x2,y2)){
                    printf("YES
    ");
                }
                else{
                    printf("NO
    ");
                }
            }
        }
        return 0;
    }
    View Code
    没有人不辛苦,只有人不喊疼
  • 相关阅读:
    android 多线程
    android调用 .net webService
    android apk程序升级
    android连数据库
    android事件
    android 服务
    android 活动
    (12)android控件-Advanced
    (11)android控件-Transitions
    (10) android控件-date
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/13869792.html
Copyright © 2011-2022 走看看