首页 > 代码库 > hdu 4925 Apple Tree(贪心)

hdu 4925 Apple Tree(贪心)

http://acm.hdu.edu.cn/showproblem.php?pid=4925


尽量让每棵苹果树周围都施肥,每次找到一个空地种上苹果树之后,使其周围的空地施肥,不再种苹果树。


#include <stdio.h>
#include <iostream>
#include <map>
#include <set>
#include <list>
#include <stack>
#include <vector>
#include <math.h>
#include <string.h>
#include <queue>
#include <string>
#include <stdlib.h>
#include <algorithm>
#define LL long long
#define _LL __int64
#define eps 1e-12
#define PI acos(-1.0)
#define C 240
#define S 20
using namespace std;

int dir[4][2] = {{-1,0},{1,0},{0,-1},{0,1}};
int Pow[5] = {1,2,4,8,16};

int main()
{
	int test;
	int n,m;
	int a[110][110];

	scanf("%d",&test);
	while(test--)
	{
		scanf("%d %d",&n,&m);
		memset(a,-1,sizeof(a));
		int ans = 0;
		for(int i = 1; i <= n; i++)
		{
			for(int j = 1; j <= m; j++)
			{
				if(a[i][j] == -1)
				{
					int cnt = 0;
					a[i][j] = 0;
					for(int k = 0; k < 4; k++)
					{
						int x = i+dir[k][0];
						int y = j+dir[k][1];
						if(x >= 1 && x <= n && y >= 1 && y <= m)
						{
							if(a[x][y] == -1 || a[x][y] == 1)
							{
								cnt++;
								a[x][y] = 1;
							}
						}
					}

					ans += Pow[cnt];
				}

			}
		}

		printf("%d\n",ans);
	}
	return 0;
}