NOI2000 青蛙过河[递推]
\(\mathcal{Description}\)
大小各不相同的一队青蛙站在河左岸的石墩(记为A)上,要过到对岸的石墩(记为D)上去。河心有几片菏叶(分别记为\(Y1…Ym)\)和几个石墩(分别记为\(S1…Sn)\)。图示如下:
青蛙的站队和移动方法规则如下:
每只青蛙只能站在荷叶、石墩,或者仅比它大一号的青蛙背上(统称为合法的落脚点);
一只青蛙只有背上没有其它青蛙的时候才能够从一个落脚点跳到另一个落脚点;
青蛙允许从左岸A直接跳到河心的石墩、荷叶和右岸的石墩D上,允许从河心的石墩和荷叶跳到右岸的石墩D上;
青蛙在河心的石墩之间、荷叶之间以及石墩和荷叶之间可以来回跳动;
青蛙在离开左岸石墩后,不能再返回左岸;到达右岸后,不能再跳回;
假定石墩承重能力很大,允许无论多少只青蛙都可呆在上面。但是,由于石墩的面积不大,至多只能有一只青蛙直接站在上面,而其他的青蛙只能依规则1落在比它大一号的青蛙的背上。
荷叶不仅面积不大,而且负重能力也有限,至多只能有一只青蛙站在上面。
每一步只能移动一只青蛙,并且移动后需要满足站队规则;
在一开始的时候,青蛙均站在A上,最大的一只青蛙直接站在石墩上,而其它的青蛙依规则6站在比其大一号的青蛙的背上。
青蛙希望最终能够全部移动到D上,并完成站队。
设河心有\(m\)片荷叶和\(n\)个石墩,请求出这队青蛙至多有多少只,在满足站队和移动规则的前提下,能从A过到D。
例如,在m=1且 n=1时,河心有一片荷叶\((Y1)\)和一个石墩\((S1)\),此时至多有\(4\)只青蛙能够过河(由小到大称为\(1、2、3、4)\),过河的一种方法为:
此例中,当河心有一片荷叶和一个石墩时,4只青蛙能够跳动9步过河。
输入描述
仅有两行,每一行仅包含一个整数和一个换行/回车符。第一行的数字为河心的石墩数\(n(0≤n≤25)\),第二行为荷叶数\(m(0≤m≤25)\)。
输出描述
仅包含一个数字和一个换行/回车符。该数字为在河心有\(n\)个石墩和\(m\)片荷叶时,最多能够过河的青蛙的只数。
\(\mathcal{Solution}\)
简单来说就是在石墩上青蛙可以类似\(Hanoi\)问题\((汉诺塔)\)地叠着
我们想叠得越多越好,显然我们既然有办法把它叠起来,用叠的逆过程就可以把它们全部合法的放到河对岸
所以我们只要考虑如何叠
设有\(n\)片荷叶,\(k\)个石墩
若\(k=0\),那么我们在每片荷叶上放一只青蛙,然后从岸上直接跳到对面一只青蛙,可以有\(n+1\)只青蛙过岸
若\(k=1\),那么我们可以在这个石墩上叠\(n+1\)只青蛙,然后就又变为\(k=0\)的情况
类似地,每多一个石墩就可以利用原来的\(k-1\)个石墩把它们的青蛙全部放到这上面来,这样就增加了一倍的青蛙可以过岸
换个想法,我们可以将每个石墩当成对岸的石墩,然后我们就先直接跳一个青蛙上来,再把当前的青蛙\(f_{k-1}-1\)全部转移到这个石墩上面,然后原来的石墩就都空了,于是可以再把原来石墩上再放\(f_{k-1}-1\),这样最后能过岸的就多了一倍
也就是有\((n+1)*2^{k}\)可以过河
\(\mathcal{Code}\)
/*******************************
Author:Morning_Glory
LANG:C++
Created Time:2019年08月27日 星期二 14时58分07秒
*******************************/
#include <cstdio>
#include <fstream>
#define ll long long
using namespace std;
ll n,k;
int main()
{
scanf("%lld%lld",&n,&k);
printf("%lld\n",(k+1)*(1<<n));
return 0;
}
如有哪里讲得不是很明白或是有错误,欢迎指正
如您喜欢的话不妨点个赞收藏一下吧
NOI2000 青蛙过河[递推]的更多相关文章
- 洛谷P1244 [NOI2000] 青蛙过河 [2017年4月计划 动态规划07]
P1244 青蛙过河 题目描述 有一条河,左边一个石墩(A区)上有编号为1,2,3,4,…,n的n只青蛙,河中有k个荷叶(C区),还有h个石墩(D区),右边有一个石墩(B区),如下图所示.n只青蛙要过 ...
- 【openjudge】【递推】例3.6 过河卒(Noip2002)
[题目描述] 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上的某一点有一个对方的马(如C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点,如图3-1 ...
- P1002 过河卒 【递推、简单动规】
题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒 ...
- 一只青蛙从第一级台阶跳到第n级,每次可以跳任意级,共有多少种跳法,并写出递推式
是斐波那契数列问题 假设f(n)是n个台阶跳的次数:(假设已经调到第n个台阶,最后一次是由哪个台阶跳上来的) f(n) = f(n-1)+f(n-2)+...+f(n-(n-1)) + f(n-n) ...
- P1244 青蛙过河
P1244 青蛙过河NOI2000主要思想:数学归纳法 递推 压位高精度 化归 理解能力和找规律的能力题意再述:1.青蛙从上到下必须连续递增或者下面是石墩 而不能是1 12 33 4而且每时每刻都要满 ...
- HRBUST 1186 青蛙过河 (思路错了)
在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串 ...
- 洛谷P1244 青蛙过河
P1244 青蛙过河 362通过 525提交 题目提供者该用户不存在 标签 难度普及- 时空限制1s / 128MB 提交 讨论 题解 最新讨论更多讨论 题目什么意思 题目看不懂啊 题目描述 有一条河 ...
- 洛谷 P1244 青蛙过河
P1244 青蛙过河 题目描述 有一条河,左边一个石墩(A区)上有编号为1,2,3,4,…,n的n只青蛙,河中有k个荷叶(C区),还有h个石墩(D区),右边有一个石墩(B区),如下图所示.n只青蛙要过 ...
- [LeetCode] Frog Jump 青蛙过河
A frog is crossing a river. The river is divided into x units and at each unit there may or may not ...
随机推荐
- android x86 安装
1.下载页面 http://www.android-x86.org 下载了: android-x86-8.1-r2.iso 用Win32DiskImager制作usb启动盘. 参考: https:// ...
- Confluence 实现公司wiki【转】
Confluence是一个企业级的Wiki软件,可用于在企业.部门.团队内部进行信息共享和协同编辑一.安装过程1 安装并配置mysql [root@vm1 ~]# /etc/my.cnf charac ...
- Composer 安装 Jira API 库
环境要求: PHP >= 5.5.9 php JsonMapper phpdotenv 安装 下载安装 Composer curl -sS https://getcomposer.org/ins ...
- 下周文件ie 谷歌兼容性处理
https://blog.csdn.net/u014628388/article/details/81738704 问题描述window.URL.createObjectURL()可以直接生成blob ...
- Python的collections之namedtuple的使用及其优势
类实现: class User: def __init__(self, name, age, height): self.name = name self.age = age self.height ...
- Spring cloud微服务安全实战-6-6jwt改造之日志及错误处理(2)
第一次请求失败了 打印出了403,第二次更新成功 现在只处理了403这种情况,还有一种情况就是401,就是当前用户需要做身份认证,你没有做身份认证. 401的处理 与403类似,也是在这里配置.Ent ...
- Spring cloud微服务安全实战-4-2微服务安全的新挑战
微服务的环境下,我的业务逻辑不再是在一个单一的进程里,而是分散了很多的进程里.订单.物流.库存.价格.每一个tomcat都是一个进程. 每一个进程,每一个tomcat都有自己的入口点.那么就导致我防范 ...
- 【Java】阿里巴巴Java开发手册
阿里巴巴Java开发手册 下载地址:https://github.com/alibaba/p3c 阿里巴巴代码规范检查插件p3c 下载地址:https://github.com/alibaba/p3c
- C# Web Service 不使用服务引用直接调用方法(转)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u011508145/article/details/79496214 using ...
- css 颜色混合模式 mix-blend-mode
CSS3 新增了一个很有意思的属性 -- mix-blend-mode ,其中 mix 和 blend 的中文意译均为混合,那么这个属性的作用直译过来就是混合混合模式,当然,我们我们通常称之为混合模式 ...