zoukankan      html  css  js  c++  java
  • 洛谷P1244 青蛙过河 DP/思路

    又是一道奇奇怪怪的DP(其实是思路题).

    原文戳>>https://www.luogu.org/problem/show?pid=1244<<

    这题的意思给的挺模糊,需要一定的人生经验理解能力.

    题目想必已知,我就提几点可能会搞错的点吧.

    1.题目说了青蛙可以:A→B(表示可以从A跳到B,下同),A→C,A→D,C→B,D→B,D→C,C→D;但却不能跳到A,B上再跳回来.所以不可以脑补成汉内塔那种跳法.

    2.青蛙只能跳到比它大1号的青蛙上面,而不是比他大的青蛙就行.所以不可以脑补成汉内塔.

    3.可以把一套操作看成一个单位元.我对一套操作的定义如下:

    当k确定而h=0时,没有中间柱子,蛤蛤们只能通过荷叶来移动.每片荷叶只能有1位青蛙.所以要求最大的通过数目就必须把所有的荷叶用上.西方哪一片荷叶我.....

    由于他们必须按顺序从小到大从上到下垒起来.所以这种情况下,最大通过数目为k+1.

          如k=4时 

             1                              

             2

             3

             4

             5 

             A          _  _  _  _          B

             从上到下跳到荷叶上:

             5          1  2  3  4                    

             A          _  _  _  _          B

             最后一位直接到B

                         1  2  3  4          5         

             A          _  _  _  _          B

             然后只能4先跳到B上

                                                4

                         1  2  3             5         

             A          _  _  _  _         B

    直至完成全部操作.这个过程就是通过两个柱子和k片荷叶完成的一个单位操作 .之后为了简化问题,我们以单位操作为最小单位讨论问题.

    我们把单位元编号,若荷叶有k片,则一个单位最多移动k+1只青蛙.我们令第1到k+1只为整体D1,而k+2到2k+2为D2,以此类推.

              假设情况柱子有1根,则易得最多通过2个单位青蛙.(D1-->柱1,D2-->B,D1-->B)

              有两根时,我们模拟过程:D1-->柱1,D2-->柱2,这个时候第一这个整体可以满足条件跳到D2头上,D1-->柱2,之后,柱1空着,加入D3,D3-->柱1,

              但此时D2被压在下面,所以就没有骚操作可以再进行了,只能加入D4直接跳到B.然后依次全部跳到B.得出结论.h=2时 通过4个单位.

              当没有柱子时,显然只有一个单位通过.观察结论,得出公式:当有k荷叶,h柱时,可通过青蛙(k+1)*2^h只.

              答案就出来了,虽然代码很简单,但还是贴一下.

    #include<iostream>
    #include<math.h>
    using namespace std;
    int main()
    {
        int i,j,m,h,k,a;
        while(cin>>h>>k)
        cout<<(k+1)*pow(2,h)<<endl;
    }

    希望各位在写完后可以为(k+1)*2^h只青蛙奉献出(k+1)*2^h秒,不然他们可能会非常angry.

    PS 这题我没用DP,标签摘了洛谷的~

  • 相关阅读:
    android笔记5——同一个Activity中Fragment的切换
    JavaScript 刚開始学习的人应知的 24 条最佳实践
    位运算符之异或的化腐朽为奇妙
    unity常见问题之20题
    汉澳sinox不受openssl心血漏洞影响并分析修复其漏洞代码
    基于canvas和Web Audio的音频播放器
    poj2595(凸包)
    HDU 1257 最少拦截系统(dp)
    【iOS开发-33】学习手动内存管理临时抛弃ARC以及retain/assign知识——iOSproject师面试必考内容
    万能狗! 程序猿屌丝独自创业之路(一)
  • 原文地址:https://www.cnblogs.com/wsblm/p/6964714.html
Copyright © 2011-2022 走看看