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 ...
随机推荐
- Cesium原理篇:6 Renderer模块(1: Buffer)【转】
https://www.bbsmax.com/A/n2d9P1Q5Dv/ 刚刚结束完地球切片的渲染调度后,打算介绍一下目前大家都很关注的3D Tiles方面的内容,但发现要讲3D Tiles,或者充分 ...
- windows下更改Apache以fastcgi方式运行php
Apache 默认 apache2handler 方式运行处理php. 下面说切换方法: 1.下载fastcgi模块,打开https://www.apachelounge.com/download/选 ...
- git只提交修改部分的代码
思路: 先用git status 查找出哪些文件被修改过了,然后 只git commit odin/code/pom.xml 1. $ git status (查看当前更改的代码) On branch ...
- Java 读取clob字段的几种方法
Java 读取clob字段的几种方法 一.第一种 Clob clob = rs.getClob("remark");//Java.sql.Clob String detailinf ...
- redis删除多个键
DEL命令的参数不支持通配符,但我们可以结合Linux的管道和xargs命令自己实现删除所有符合规则的键.比如要删除所有以“user:”开头的键,就可以执行redis-cli KEYS "u ...
- radioButon的使用
界面: <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android=& ...
- Ionic4 Cordova 调用原生硬件 Api 实现扫码功能
QR Scanner 速度快,样式随心所欲,默认只能扫二维码 https://ionicframework.com/docs/native/qr-scanner/ 安装插件 ionic cordova ...
- ES6深入浅出-3 三个点运算 & 新版字符串-1.函数与对象的语法糖
主要讲的内容 时间充裕的话就讲,模板字面量 默认参数值 首先讲es6之前,我们是怎么做的.例如我们要写一个求和的函数, 请两个参数的和,但是如果有的人就是穿一个参数呢? 那么b没有传值,b的值是多少呢 ...
- Qt编写自定义控件63-水波效果
一.前言 几年前就一直考虑过写这个控件了,在9年前用C#的时候,就看到过别人用C#写了个水波效果的控件,挺好玩的,当时看了下代码用的二维数组来存储变换的图像像素数据,自从学了Qt以后,有过几次想要用Q ...
- CM记录-CDH部署手册
1.安装环境和软件准备 CentOS release 7.4 JDK1.8.0_121 mysql-connector-java-5.1.40-bin.jar CDH-5.10.2-1.cdh ...