[NOI2000] 青蛙过河

题目描述

大小各不相同的一队青蛙站在河左岸的石墩(记为 A)上,要过到对岸的石墩(记为 D)上去。河心有几片荷叶(分别记为 Y1…YmY1​…Ym​)和几个石墩(分别记为 S1…SnS1​…Sn​)。图示如下:

青蛙的站队和移动方法规则如下:

  • 每只青蛙只能站在荷叶、石墩,或者仅比它大一号的青蛙背上(统称为合法的落脚点);
  • 一只青蛙只有背上没有其它青蛙的时候才能够从一个落脚点跳到另一个落脚点;
  • 青蛙允许从左岸 A 直接跳到河心的石墩、荷叶和右岸的石墩 D 上,允许从河心的石墩和荷叶跳到右岸的石墩 D 上;
  • 青蛙在河心的石墩之间、荷叶之间以及石墩和荷叶之间可以来回跳动;
  • 青蛙在离开左岸石墩后,不能再返回左岸;到达右岸后,不能再跳回;
  • 假定石墩承重能力很大,允许无论多少只青蛙都可呆在上面。但是,由于石墩的面积不大,至多只能有一只青蛙直接站在上面,而其他的青蛙只能依规则 1 落在比它大一号的青蛙的背上。
  • 荷叶不仅面积不大,而且负重能力也有限,至多只能有一只青蛙站在上面。
  • 每一步只能移动一只青蛙,并且移动后需要满足站队规则;
  • 在一开始的时候,青蛙均站在 A 上,最大的一只青蛙直接站在石墩上,而其它的青蛙依规则 6 站在比其大一号的青蛙的背上。

青蛙希望最终能够全部移动到 D 上,并完成站队。

设河心有 mm 片荷叶和 nn 个石墩,请求出这队青蛙至多有多少只,在满足站队和移动规则的前提下,能从 A 过到 D。

你的任务是对于给出的 n,mn,m,计算并输出最多能有多少只青蛙可以根据以上规则顺利过河。

输入格式

输入两个整数 n,mn,m。

输出格式

一个整数,表示最多能有多少只青蛙可以根据以上规则顺利过河。

输入输出样例

输入 #1复制

1 1

输出 #1复制

4

说明/提示

n≤20n≤20,m≤103m≤103。

#include <iostream>
using namespace std;
int main(){
    int h,k;
    cin>>h>>k;
    cout<<(k+1)*(1<<h);
    return 0;
}
  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值