题意:在N*M的土地上的种苹果树 每一棵的产量是一个苹果 但是如果相邻的土地有肥料的话 (上下左右) 那么这片土地上的苹果树的产量就会翻倍 并且翻倍可叠加
思路:题目很水 多校里的签到题 因为数据很小 可以先构建土地 再进行遍历 最傻的方法了......
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<set>
#include<vector>
#include<algorithm>
using namespace std;
#define mem(a) memset(a,-1,sizeof(a))
#define ll __int64
int main(){
int T;
int map[120][120];
scanf("%d",&T);
while(T --){
mem(map);
int n,m;
scanf("%d%d",&n,&m);
if( n == 1 && m == 1) {
puts("1");
continue;
}
for(int i = 1;i <= m;i++ )
map[1][i] = i % 2;
for(int i = 2;i <= n;i++)
for(int j = 1;j <= m;j++){
if(map[i - 1][j] == 0) map[i][j] = 1;
else map[i][j] = 0;
}
ll ans = 0;
for(int i = 1;i <= n;i++)
for(int j = 1;j <= m;j++){
if(map[i][j] == 0){
ll tmp = 1;
if(map[i - 1][j] == 1) tmp *= 2;
if(map[i + 1][j] == 1) tmp *= 2;
if(map[i][j - 1] == 1) tmp *= 2;
if(map[i][j + 1] == 1) tmp *= 2;
ans += tmp;
}
}
printf("%I64d\n",ans);
}
return 0;
}