http://acm.hust.edu.cn/vjudge/contest/view.action?cid=102419#problem/C

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

题意:给你n×m的格子,每个格子你可以选择给1,或者使它上下左右(如果有)的数字乘2,你对每个格子操作的先后顺序是自由的,求所有格子数字总和的最大值。

t组(小于100)数据,n和m(1到100)

题解:要使总和最大,那就每隔一个格子给1,使得每个给1的格子周围都是乘2的格子,这样它就乘了最多次2,比如3行4列

1 0 1 0

0 1 0 1

1 0 1 0

这里0表示使周围的乘2,我们的顺序是先给1,再乘2,于是总和是4+8+16+8+4+8=48

法一。

模拟这些格子,根据n和m,构造出上述的01二维数组,再对每个格子判断周围几个0,然后乘几次2,累加答案

代码:

#include<cstdio>
#include<cstring> int ma[][];
int main()
{
int n,m,t,k,ans,u,h;
int ma[][];
scanf("%d",&t); while(t--)
{
memset(ma,,sizeof(ma));
ans=;
k=;
scanf("%d%d",&n,&m);
for(int i=; i<n; i++)
{
for(int j=+k; j<m; j+=)
ma[i][j]=;//设置它为1
k=!k;
}
for(int i=; i<n; i++)
{
for(int j=; j<m; j++)
{
if(ma[i][j])
{
h=;
u=;
if(i->=)if(!ma[i-][j])u++;//如果为0,代表乘2
if(i+<n)if(!ma[i+][j])u++;
if(j->=)if(!ma[i][j-])u++;
if(j+<m)if(!ma[i][j+])u++;
for(int l=; l<=u; l++)h*=;
ans+=h;
}
}
}
printf("%d\n",ans); }
return ; }

法二。

如果行列数之和为奇数,则给1,并且使它周围为乘2,则这个1就要乘几次2了,根据是否在边缘,判断乘几次2,累加答案

代码:

//code from lyt
#include<cstdio>
using namespace std;
int T;
int n,m;
long long ans=;
long long now=;
int main()
{
scanf("%d",&T);
while(T)
{
scanf("%d%d",&n,&m);
ans=;
for(int i=; i<=n; i++)
{
for(int j=; j<=m; j++)
{
if((i+j)&)
{
now=;
if(i>)
now<<=;
if(j>)
now<<=;
if(i<n)
now<<=;
if(j<m)
now<<=;
ans+=now;
}
}
}
printf("%lld\n",ans);
T--;
}
return ;
}

法三。

通过分析推出公式(x表示n,y表示m)

ans=1,当x=1,y=1;

ans=2*(y-1),当x=1,y>1;

ans=(x-1)*2,当x>1,y=1;

ans=(x-1)*8*(y-1),当x>1,y>1;

具体怎么分析推出的,...不详

代码:

//code from zdh
#include<stdio.h>
int T,x,y,s;
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&x,&y);
if(x>)
{
if(y==)
s=(x-)*;
else
s=(x-)**(y-);
}
else
{
if(y==)
s=;
else
s=*(y-);
}
printf("%d\n",s);
}
return ;
}

  

【HDU 4925】BUPT 2015 newbie practice #2 div2-C-HDU 4925 Apple Tree的更多相关文章

  1. 【CodeForces 312B】BUPT 2015 newbie practice #3A Archer

    题 SmallR is an archer. SmallR is taking a match of archer with Zanoes. They try to shoot in the targ ...

  2. 【CodeForces 605A】BUPT 2015 newbie practice #2 div2-E - Sorting Railway Cars

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=102419#problem/E Description An infinitely lon ...

  3. 【UVALive 3905】BUPT 2015 newbie practice #2 div2-D-3905 - Meteor

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=102419#problem/D The famous Korean internet co ...

  4. 【UVA 401】BUPT 2015 newbie practice #2 div2-B-Palindromes

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=102419#problem/B A regular palindrome is a str ...

  5. 【UVA 11078】BUPT 2015 newbie practice #2 div2-A -Open Credit System

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=102419#problem/A In an open credit system, the ...

  6. 【最大流】ECNA 2015 F Transportation Delegation (Codeforces GYM 100825)

    题目链接: http://codeforces.com/gym/100825 题目大意: N(N<=600)个点,每个点有个名字Si,R(R<=200)个生产商在R个点上,F(F<= ...

  7. 【宽搜】ECNA 2015 D Rings (Codeforces GYM 100825)

    题目链接: http://codeforces.com/gym/100825 题目大意: 给你一张N*N(N<=100)的图表示一个树桩,'T'为年轮,'.'为空,求每个'T'属于哪一圈年轮,空 ...

  8. 【宽搜】ECNA 2015 E Squawk Virus (Codeforces GYM 100825)

    题目链接: http://codeforces.com/gym/100825 题目大意: N个点M条无向边,(N<=100,M<=N(N-1)/2),起始感染源S,时间T(T<10) ...

  9. 【VSTS 日志】TFS 2015 Update 1 发布 – Git和TFVC代码库可以混合使用了

    Visual Studio Team Foundation Server 2015 Update 1已经发布了. 这是 Team Foundation Server (TFS) 的最新版本,是 Mic ...

随机推荐

  1. HDU 3491 最小点权割集

    题意:有n个城市,m条双向边,有一群小偷从s前往t偷东西,警察叔叔们想要逮捕小偷们,现在告诉你在每座城市需要多少警察才能抓住这个城市的小偷,为什么说这个城市,因为小偷们会分开跑:然后题目还说不能在s和 ...

  2. java10-3 equals方法

    public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”.   该方法,默认情况下比较的是地址值.但是,如果只是比较地址值的话,一般来说意义不大,所以要 ...

  3. 【从0到1】android网络框架的选型参考

    项目会使用到 socket tcp 级的网络访问,想选取一个使用较成熟异步网络框架, 提到的网络框架: 1. volley, 2. xutils. 3. android 4. netty, 5. mi ...

  4. Java 数据类型和变量

    1.1 基本类型与引用类型的区别 1.基本类型代表简单的数据类型,比如整数和字符,引用类型所引用的实例能表示任意一种复杂的数据类型. 2.基本类型仅表示数据类型,而引用类型所引用的实例除了表示复杂数据 ...

  5. salt进程查看插件&salt批量创建用户

    接受key 剔除主机   启动 salt-minion-d     软件包的安装   salt '*' state.sls init.env-init test=true   salt批量创建用户: ...

  6. Java系列:Collection.toArray用法研究

    该方法的签名如下: <T> T[] Collection.toArray(T[] arrayToFill); 这里想验证两个问题: 1)arrayToFill什么时候会被填充: 2)arr ...

  7. Spring MVC实现文件下载

     下载文件① 下载文件需要将byte数组还原成文件. 首先使用mybatis将数据库中的byte数组查出来,指定文件名(包括格式).然后使用OutputStream将文件输入 @RequestMapp ...

  8. C++ VS2010 声明没有存储类或类型说明符

    函数外只能定义全局变量或者对象,而不能执行语句及调用函数.

  9. 由外边距合并到BFC

    置顶文章:<纯CSS打造银色MacBook Air(完整版)> 上一篇:<JavaScript实现Ajax小结> 作者主页:myvin 博主QQ:851399101(点击QQ和 ...

  10. IE firefox 兼容性整理

    1.尽量用jquery操作. 2.jquery取值时要用准确的方法,attr(), val(), text(), html(). 例如: <span value="a"> ...