题目名称 294. [NOI 2000]青蛙过河
输入输出 frog.in/out
难度等级 ★☆
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 GravatarBYVoid 于2009-03-08加入
开放分组 全部用户
提交状态
分类标签
NOI 递推 数学
分享题解
通过:98, 提交:133, 通过率:73.68%
GravatarYoungsc 100 0.000 s 0.00 MiB C++
Gravatar烟雨 100 0.000 s 0.00 MiB C++
Gravatar烟雨 100 0.000 s 0.00 MiB C++
Gravatar雾茗 100 0.000 s 0.00 MiB C++
GravatarSKG_G 100 0.000 s 0.00 MiB C++
GravatarFoolMike 100 0.000 s 0.17 MiB Pascal
Gravatar甘罗 100 0.000 s 0.17 MiB Pascal
Gravatars先生b先生sb先生无关风度 100 0.000 s 0.17 MiB Pascal
Gravatar我想 100 0.000 s 0.17 MiB Pascal
Gravatars先生b先生sb先生无关风度 100 0.001 s 0.15 MiB Pascal
本题关联比赛
20100926练习
noi2000练习1
练习Noip2009
关于 青蛙过河 的近10条评论(全部评论)
考古,膜拜一下前几届的大佬
GravatarSKG_G
2022-08-06 10:00 5楼
其实这题也可以用递归的、、、、

#include<iostream>
using namespace std;
int jump(int,int);
int main()
{
int s,y;
cin>>s>>y;
cout<<jump(s,y);
return 0;
}
int jump (int s,int y)
{
if(s==0) return y+1;
return 2*jump(s-1,y);
}
Gravatar乌龙猹
2014-10-08 16:40 4楼
29号你们坐火车是去哪个大学?@zhuyifan
GravatarQhelDIV
2012-12-29 13:21 3楼
orz @638
GravatarMakazeu
2012-12-28 20:51 2楼
在学考的时候推出来的,我还以为只有我是O(1)!结果发现其他人全都是这个算法...
GravatarQhelDIV
2012-12-28 12:05 1楼

294. [NOI 2000]青蛙过河

★☆   输入文件:frog.in   输出文件:frog.out   简单对比
时间限制:1 s   内存限制:128 MiB

【题目描述】

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

Image:Frog.gif

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

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

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

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

例如,在m=1且 n=1时,河心有一片荷叶(Y1)和一个石墩(S1),此时至多有4只青蛙能够过河(由小到大称为1、2、3、4),过河的一种方法为:

开始

 

1

2

3

4

A    S1    Y1    D

Step 1

1 from A to Y1

2

3

4         1

A    S1    Y1    D

Step 2

2 from A to S1

3

4    2     1

A    S1    Y1    D

Step 3

1 from Y1 to S1

3    1

4    2

A    S1    Y1    D

Step 4

3 from A to Y1

     1

4    2     3

A    S1    Y1    D

Step 5

4 from A to D

     1

     2     3    4

A    S1    Y1    D

Step 6

3 from Y1 to D

     1         3

     2         4

A    S1    Y1    D

Step 7

1 from S1 to Y1

              3

     2     1    4

A    S1    Y1    D

Step 8

2 from S1 to D

    2

    3

         1     4

A    S1    Y1    D

Step 9

1 from Y1 to D

                 1

                 2

                 3

                 4

A    S1    Y1    D

此例中,当河心有一片荷叶和一个石墩时,4只青蛙能够跳动9步过河。

【输入格式】

文件仅有两行,每一行仅包含一个整数和一个换行/回车符。第一行的数字为河心的石墩数n(0<=n<=25),第二行为荷叶数m(0<=m<=25)。

【输出格式】

文件中仅包含一个数字和一个换行/回车符。该数字为在河心有n个石墩和m片荷叶时,最多能够过河的青蛙的只数。

【输入样例】

1
1

【输出样例】

4