P1244 青蛙过河

    • 362通过
    • 525提交
  • 题目提供者该用户不存在
  • 标签
  • 难度普及-
  • 时空限制1s / 128MB

提交 讨论 题解

最新讨论更多讨论

题目描述

有一条河,左边一个石墩(A区)上有编号为1,2,3,4,…,n的n只青蛙,河中有k个荷叶(C区),还有h个石墩(D区),右边有一个石墩(B区),如下图所示。n只青蛙要过河(从左岸石墩A到右岸石墩B),规则为:

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

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

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

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

输入输出格式

输入格式:

两个整数h,k

输出格式:

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

输入输出样例

输入样例#1:

2 3
输出样例#1:

16
分析:这道题很显然是一道递推的题,和汉诺塔问题差不多,影响答案的是荷叶的数量和石墩的数量,那么我们设f[i][j]表示有i个石墩,j个荷叶,最多能跳过去多少只青蛙.先从小的情况来考虑,f[0][j] = j + 1,很显然,先让一只青蛙跳到石墩上,然后其它青蛙跳到荷叶上,最后统一跳到石墩上.那么f[1][j]呢?有了另外一个石墩,我们可以先让尽量多的小号青蛙跳到D上,再让尽量多的大号青蛙跳到B上,最后让D上的青蛙跳到B上,这样我们可以先把B当作不存在,那么就是前一种情况f[0][j],然后把D当作不存在,还是前一种情况f[0][j],那么f[1][j]就是2*f[0][j].
再来分析一下f[2][j],跳到B上的和跳到一号石墩的青蛙数是2*f[0][j],跳到二号石墩的青蛙数就是f[1][j]了,因为我们只考虑二号石墩,忽略一号石墩,把二号石墩当作了终点,那么相当于只有一号石墩的这种情况,其他石墩就不能当作终点了。可以得到f[i][j] = sum{f[k][j]} + f[0][k](0 <= k < j),f[0][j]告诉了,那么我们可以化简这个式子,f[1][j] = 2*f[0][j],f[2][j] = 4*f[0][j],f[3][j] = 8*f[0][j],那么最终答案就是(k+1)*2^h.
比较值得回味的几个地方:1.定义状态看哪些量对答案有影响,最直接的就是把输入定义为状态.2.先分析小情况,一步一步推向一般情况.
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath> using namespace std; int h,k; int main()
{
scanf("%d%d",&h,&k);
printf("%d\n",(k + ) * ( << h)); return ;
}

洛谷P1244 青蛙过河的更多相关文章

  1. 洛谷 P1244 青蛙过河

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

  2. 洛谷P1244 青蛙过河 DP/思路

    又是一道奇奇怪怪的DP(其实是思路题). 原文戳>>https://www.luogu.org/problem/show?pid=1244<< 这题的意思给的挺模糊,需要一定的 ...

  3. 洛谷P1244 [NOI2000] 青蛙过河 [2017年4月计划 动态规划07]

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

  4. P1244 青蛙过河

    P1244 青蛙过河NOI2000主要思想:数学归纳法 递推 压位高精度 化归 理解能力和找规律的能力题意再述:1.青蛙从上到下必须连续递增或者下面是石墩 而不能是1 12 33 4而且每时每刻都要满 ...

  5. 【洛谷】P1052 过河【DP+路径压缩】

    P1052 过河 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙 ...

  6. 洛谷 p1516 青蛙的约会 题解

    dalao们真是太强了,吊打我无名蒟蒻 我连题解都看不懂,在此篇题解中,我尽量用语言描述,不用公式推导(dalao喜欢看公式的话绕道,这篇题解留给像我一样弱的) 进入正题 如果不会扩展欧里几德的话请先 ...

  7. 洛谷P1516 青蛙的约会(扩展欧几里德)

    洛谷题目传送门 很容易想到,如果他们相遇,他们初始的位置坐标之差\(x-y\)和跳的距离\((n-m)t\)(设\(t\)为跳的次数)之差应该是模纬线长\(l\)同余的,即\((n-m)t\equiv ...

  8. 【洛谷】P1052 过河(状压dp)

    题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数 ...

  9. 【题解】洛谷P1052 [NOIP2005TG] 过河(DP+离散化)

    题目来源:洛谷P1052 思路 一开始觉得是贪心 但是仔细一想不对 是DP 再仔细一看数据不对 有点大 如果直接存下的话 显然会炸 那么就需要考虑离散化 因为一步最大跳10格 那么我们考虑从1到10都 ...

随机推荐

  1. Properties没有被注意的地方

    源起: 今天阅读源码时发现一个地方不理解: 为什么以下代码第10行 get() 之后value为null时还去 getProperty() 呢? org.springframework.util.Co ...

  2. Android手机屏幕投射到电脑神器Vysor

    做android开发的,经常要把手机屏幕投射到电脑,用来演示.普遍的解决方案是360或者豌豆荚的演示功能,缺点是延迟非常厉害,大概有3秒左右,非常影响演示效果.以下介绍Vysor,几乎0延迟,能与手机 ...

  3. TigerGraph REST++API

    简介 - 什么是REST ++? TigerGraph TM 系统使用着名的REpresentational State Transfer(REST)架构来管理与TigerGraph核心组件,图形处理 ...

  4. c++正则表达式模板库GRETA的使用

    GRETA是微软研究院的一位前员工开发并开源的一个C++正则表达式库,兼容perl正则语法 官方介绍:“A fast, flexible, perl-compliant regular express ...

  5. Winform用Post方式打开IE

    1.主要实现Code void OpenNewIe(string url, string postData)///url是要post的网址,postData是要传入的参数 { if (ie != nu ...

  6. 51nod 1067 Bash游戏 V2

    基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 有一堆石子共有N个.A B两个人轮流拿,A先拿.每次只能拿1,3,4颗,拿到最后1颗石子的人获胜.假设A B都非常聪 ...

  7. MongoDB最简单的入门教程之三 使用Java代码往MongoDB里插入数据

    前两篇教程我们介绍了如何搭建MongoDB的本地环境: MongoDB最简单的入门教程之一 环境搭建 以及如何用nodejs读取MongoDB里的记录: MongoDB最简单的入门教程之二 使用nod ...

  8. Hessian矩阵与牛顿法

    Hessian矩阵与牛顿法 牛顿法 主要有两方面的应用: 1. 求方程的根: 2. 求解最优化方法: 一. 为什么要用牛顿法求方程的根? 问题很多,牛顿法 是什么?目前还没有讲清楚,没关系,先直观理解 ...

  9. dircolors - 设置‘ls'显示结果的颜色

    SYNOPSIS[总览] dircolors [-b] [--sh] [--bourne-shell] [-c] [--csh] [--c-shell] [-p] [--print-database] ...

  10. JavaSE-26 Swing

    学习要点 关于Swing Swing容器组件 Swing布局管理器 Swing组件 Swing菜单组件 关于Swing Swing和AWT都是java开发图形用户界面的工具包. AWT:早期Java版 ...