zoukankan      html  css  js  c++  java
  • 外星人(alien)

    这里写图片描述
    这里写图片描述

    这个题用前缀和来判断a*b大小的矩形,是否和为0(将有障碍的标为1)。
    一个不容易错的的写法是

    int work(int x,int y)
    {
        int sum=0;
        for(int i=x;i<=n;i++) for(int j=y;j<=m;j++)
        if(s[i][j]-s[i-x][j]-s[i][j-y]+s[i-x][j-y]==0) sum++;
        return sum;
    }

    直接从a和b开始枚举矩形,注意长方形还要做一遍b*a

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    int a[1009][1009],s[1009][1009];
    int n,m,p,q;
    int work(int x,int y)
    {
        int sum=0;
        for(int i=x;i<=n;i++) for(int j=y;j<=m;j++)
        if(s[i][j]-s[i-x][j]-s[i][j-y]+s[i-x][j-y]==0) sum++;
        return sum;
    }
    int main()
    {
        scanf("%d%d%d%d",&n,&m,&p,&q);
        while(p--){int x,y;scanf("%d%d",&x,&y);a[x][y]=1;} 
        for(int i=1;i<=n;i++) for(int j=1;j<=m;j++)
        s[i][j]=a[i][j]+s[i-1][j]+s[i][j-1]-s[i-1][j-1];
        while(q--)
        {
            int b,c,ans;cin>>b>>c;
            if(b==c) ans=work(b,c);
            else ans=work(b,c)+work(c,b);
            printf("%d
    ",ans);
        }
        return 0;
    } 
  • 相关阅读:
    nova 注入adminpass 添加用户等设置
    mysql 集群 avc error
    openstack novnc console haproxy mitaka
    NFS金陵科技学院
    windows下命令行格式化U盘
    linux下安装mysql
    连表查询
    查询语句
    索引
    插入,更新与删除数据
  • 原文地址:https://www.cnblogs.com/dfsac/p/7587888.html
Copyright © 2011-2022 走看看