题解 - [Luogu P1244] [NOI2000] 青蛙过河

题目链接

原始题面

题目描述

有一条河,左边一个石墩 (A 区) 上有编号为 \(1, 2, 3, 4, …, n\)\(n\) 只青蛙,河中有 \(k\) 个荷叶 (C 区), 还有 \(h\) 个石墩 (D 区), 右边有一个石墩 (B 区), 如下图所示.

\(n\) 只青蛙要过河 (从左岸石墩 A 到右岸石墩 B), 规则为:

(1) 石墩上可以承受任意多只青蛙,荷叶只能承受一只青蛙 (不论大小);

(2) 青蛙可以: \(A\to B\)(表示可以从 A 跳到 B, 下同), \(A\to C, A\to D, C\to B, D\to B, D\to C, C\to D\);

(3) 当一个石墩上有多只青蛙时,则上面的青蛙只能跳到比它大 1 号的青蛙上面.

你的任务是对于给出的 \(h, k\), 计算并输出最多能有多少只青蛙可以根据以上规则顺利过河?

输入输出格式

输入格式

两个整数 \(h,k\ (h<20 , k<1000)\)

输出格式

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

输入输出样例

输入样例 #1

1
2 3

输出样例 #1

1
16

解题思路

打表可得 答案为 \(2^h(k+1)\)

\(f(h,k)\)\(h\) 个石墩,\(k\) 个荷叶的结果

显然有

\[ f(h,k)=\begin{cases} k+1,&h=0\\ 2f(h-1,k),&h>0 \end{cases} \]

\(f(h,k)=2^h(k+1)\)

代码略