码迷,mamicode.com
首页 > 移动开发 > 详细

HDU 4925 Apple Tree(模拟题)

时间:2014-08-07 22:35:58      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   for   art   

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4925

解题报告:给你n*m的土地,现在对每一块土地有两种操作,最多只能在每块土地上进行两种操作,第一种是种苹果树操作,第二种是施肥操作,种苹果树操作可以使得该块地

长出一个苹果,施肥操作可以使得与这块土地相邻的土地的苹果产量变为原来的两倍,问可以得到的最多的苹果数量是多少?

例如一个4*4的土地,用1表示在该土地上做第一种操作,0表示在该土地上做第二种操作,可以得到最多苹果的操作如下:

0 1 0 1

1 0 1 0

0 1 0 1

1 0 1 0

也就是说对于第i行第j列,如果(i + j)为奇数的话就种树,其它的土地都施肥。

注意要对1 * 1的土地加特判。

bubuko.com,布布扣
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 using namespace std;
 6 const int maxn = 100+5;
 7 int map[maxn][maxn];
 8 int _x[4] = {-1,0,1,0};
 9 int _y[4] = {0,1,0,-1};
10 int main()
11 {
12     int T,n,m;
13     scanf("%d",&T);
14     while(T--)
15     {
16         scanf("%d%d",&n,&m);
17         if(n == 1 && m == 1)
18         {
19             printf("1\n");
20             continue;
21         }
22         memset(map,0,sizeof(map));
23         for(int i = 1;i <= n;++i)
24         for(int j = 1;j <= m;++j)
25         if((i + j) & 1)
26         map[i][j] = 1;
27         for(int i = 1;i <= n;++i)
28         for(int j = 1;j <= m;++j)
29         if(!map[i][j])
30         for(int k = 0;k <  4;++k)
31         {
32             int x = i + _x[k];
33             int y = j + _y[k];
34             if(x >= 1 && x <= n && y >= 1 && y <= m)
35             map[x][y] *= 2;
36         }
37         int ans = 0;
38         for(int i = 1;i <= n;++i)
39         for(int j = 1;j <= m;++j)
40         ans += map[i][j];
41         printf("%d\n",ans);
42     }
43     return 0;
44 }
View Code

 

HDU 4925 Apple Tree(模拟题),布布扣,bubuko.com

HDU 4925 Apple Tree(模拟题)

标签:style   blog   http   color   os   io   for   art   

原文地址:http://www.cnblogs.com/xiaxiaosheng/p/3898016.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!