第六场多校签到题。。
种苹果的为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; }