现在的位置: 首页 > 综合 > 正文

hdu 4925

2018年04月21日 ⁄ 综合 ⁄ 共 627字 ⁄ 字号 评论关闭

第六场多校签到题。。

种苹果的为0 施肥的为1  种苹果的地方四个方向扫下

然后n*m中最少有n*m个苹果。

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int const MAXN = 110;
int m[MAXN][MAXN];
int a[] = {1,2,4,8,16};
int dx[] = {0,0,1,-1};
int dy[] = {1,-1,0,0};
int main(){
    int T;
    while(~scanf("%d",&T)){
        while(T--){
            int n,mm;
            scanf("%d%d",&n,&mm);
            memset(m,0,sizeof(m));
            for(int i = 1;i <= n;i++){
                for(int j = 1;j <= mm;j++){
                    if(i&1){
                        if(j&1) m[i][j] = 1;
                    }
                    else if(i % 2 == 0){
                        if(j % 2 == 0) m[i][j] = 1;
                    }
                }
            }
            int s = 0;
            for(int  i = 1;i <= n;i++){
                for(int j = 1;j <= mm;j++){
                    if(m[i][j]) continue;
                    int cnt = 0;
                    for(int k = 0;k < 4;k++){
                        int x = i + dx[k];
                        int y = j + dy[k];
                        if(m[x][y])cnt++;
                    }
                    s += a[cnt];
                }
            }
            if(s == 0)printf("1\n");
            else printf("%d\n",s);
        }
    }
    return 0;
}
【上篇】
【下篇】

抱歉!评论已关闭.