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

Apple Tree

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)

Total Submission(s): 188    Accepted Submission(s): 129

Problem Description
I’ve bought an orchard and decide to plant some apple trees on it. The orchard seems like an N * M two-dimensional map. In each grid, I can either plant an apple tree to get one apple or fertilize the soil to speed up its neighbors’ production. When a grid
is fertilized, the grid itself doesn’t produce apples but the number of apples of its four neighbor trees will double (if it exists). For example, an apple tree locates on (x, y), and (x - 1, y), (x, y - 1) are fertilized while (x + 1, y), (x, y + 1) are not,
then I can get four apples from (x, y). Now, I am wondering how many apples I can get at most in the whole orchard?
 
Input
The input contains multiple test cases. The number of test cases T (T<=100) occurs in the first line of input.

For each test case, two integers N, M (1<=N, M<=100) are given in a line, which denote the size of the map.
 
Output
For each test case, you should output the maximum number of apples I can obtain.
 
Sample Input
2
2 2
3 3
 
Sample Output
8
32
 
Source
 
Recommend
 

Statistic | Submit | Discuss | Note

签道题,没啥好说的,黑白染色的方法是最优的,特判1*1的情况

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<string>
#include<vector>
#include<algorithm>
#include<queue>
#include<stack>
#include<set>
#include<map>
using namespace std;
#define CLR(A) memset(A,0,sizeof(A))
int A[110][110];
int main(){
int T,m,n;
cin>>T;
while(T--){
cin>>n>>m;
if(n==1 && m==1){
cout<<1<<endl;
continue;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
A[i][j]=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
if(A[i][j]==1){
A[i-1][j]<<=1;
A[i+1][j]<<=1;
A[i][j-1]<<=1;
A[i][j+1]<<=1;
}
}
long long sum=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
if(A[i][j]!=1){
sum+=A[i][j];
}
}
cout<<sum<<endl;
}
return 0;
}

最新文章

  1. iOS学习笔记——AutoLayout的约束
  2. openstack虚拟机启动过程
  3. [MySQL FAQ]系列 — 为什么InnoDB表要建议用自增列做主键
  4. WPF 样式和行为
  5. 笔记13:File 类的一些操作
  6. VC中常用的宏[转]
  7. linux下安装pkg-config时遇到&quot;glib-2.0&gt;=2.16&quot;的错
  8. UVa 1213 (01背包变形) Sum of Different Primes
  9. Demo学习: CellDraw
  10. Linux下的强大工具之一sed(转),Shell必备
  11. FZU 1062 洗牌问题
  12. Java进阶篇设计模式之十一 ---- 策略模式和模板方法模式
  13. JS(JavaScript)的初了解8(更新中&#183;&#183;&#183;)
  14. [Java] SpringMVC工作原理之四:MultipartResolver
  15. 【转】ubuntu apt-get update 失败解决
  16. WebApi FormData+文件长传 异步+同步实现
  17. 使用jquery修改表单的提交地址
  18. Basis 基础
  19. Flask 入门(第三篇)
  20. AtCoder Beginner Contest 103

热门文章

  1. linux 如何查看硬盘大小,内存大小等系统信息及硬件信息
  2. 关于markdown 的简单使用(已更新)
  3. Android开发——常用ADB命令的使用
  4. INFO main org.springframework.context.support.AbstractApplicationContext
  5. Leetcode 239.滑动窗口最大值
  6. [POJ2446] Chessboard(二分图最大匹配-匈牙利算法)
  7. Linux(3):linux目录结构
  8. 《计算机网络课程设计》基本操作(基于Cisco Packet Tracer)
  9. msp430入门编程40
  10. mysql针对转义字符的模糊搜索