同步发表于我的洛谷博客。

NOIP2013提高问题求解2:

现有一只青蛙,初始时在n号荷叶上。当它某一时刻在k号荷叶上时,下一时刻将等概率地随机跳到1,2,……,k号荷叶之一上,直到跳到第1号荷叶为止。当n=2时,平均一共跳2次,n=3时,平均一共跳2.5次。当n等于5时,平均一共跳几次。

先将问题转为青蛙随机跳了一步以后的情况,分为5种情况,分别是落在1号、2号、3号、4号、5号荷叶上。每种情况发生的概率为1/5。

然后设f(n)为n片荷叶所需的平均次数。显然,f(1)=1。

先从简单的考虑:

当n=2:
共2种情况:落在1号或2号上。
落在1号上,问题变为求f(1)。
落在2号上,问题变为求f(2)+1。

Q:为什么要加1?

A:因为它已经跳过一次了。

Q:为什么f(1)不用?

A:因为它已经到了。

由于是求平均值,且f(1)已知,那么可列方程:

f(2)=(f(1)+1+f(2))*1/2

解得f(2)=2。

Q:为什么要把所有的相加?

A:请考虑加法原理。

然后到n=3的状态:

共3种情况:落在1号或2号或3号上。
落在1号上,问题变为求f(1)。
落在2号上,问题变为求f(2)+1。
落在3号上,问题变为求f(3)+1。

熟不熟悉?

每一个原问题都可以分成n个子问题,子问题规模变小(???),子问题相加即可求得原问题的答案。

有点递归的感觉。

来看看扩展到n=k的状态:

共k种情况:落在1号或2号或3号或……或k号上。
落在1号上,问题变为求f(1)。
落在2号上,问题变为求f(2)+1。
落在3号上,问题变为求f(3)+1。
……
此处省略
……
落在k号上,问题变为求f(k)+1。

可得方程f(k)=(f(1)+1+f(2)+1+f(3)+······+1+f(k))*1/k

接下来,对上面这个方程进行合并同类项:

k*f(k)=(f(1)+1+f(2)+1+f(3)+······+1+f(k))

k*f(k)=k-1+(f(1)+f(2)+f(3)+······+f(k))

(k-1)*f(k)=k-1+(f(1)+f(2)+f(3)+······+f(k-1))

f(k)=1+(f(1)+f(2)+f(3)+······+f(k-1))*1/k

至此,f(n)的递推公式就被我们推出了:

f(n)=1+(f(1)+..f(n-1))/(n-1)

这道题的难点也就在于递推公式的推出,推出递推公式,n=5神马的,都是渣渣。

好了,now,来个总结:首先我们先用递归的思想,来尝试着把问题缩小规模,规模缩小后,就可以列出关系式了。再从一般到特殊,列出一般情况下的关系式后,化简,我们发现化简后的式子的形式形如递推式,那么,我们就可以自下往上来求解了。

实际上,有时候递推和递归从本质上来说,并无差别。有些时候我们用递归的思想来考虑问题,用递推的方式来实现求解,这样可以大大减小思维难度及代码实现难度。

至于为什么递推和递归从本质上来说,并无差别。首先得搞清楚,这是对于一个能用递推求解的问题而言的。

因为任何循环都可以用递归写(只要你胆够大,不怕爆0),而一般我们实现递推无非就是循环+数组之类的了。所以,递推一定可以用递归来实现。For example,斐波那契数列。(想想动态规划吧,dfs无非就是把复杂度增加了而已)但请注意,不是所有的递归都可以用循环实现滴,比如说,回溯法。那么,可得出:递归不一定可以用递推来实现。

希望对你能有帮助,哪怕一点点,我也满足了。

可转载,请注明作者及其来源。

NOIP2013提高问题求解T2(关于递推与递归)的更多相关文章

  1. 从一道NOI练习题说递推和递归

    一.递推: 所谓递推,简单理解就是推导数列的通项公式.先举一个简单的例子(另一个NOI练习题,但不是这次要解的问题): 楼梯有n(100 > n > 0)阶台阶,上楼时可以一步上1阶,也可 ...

  2. 【Luogu】【关卡2-12】递推与递归二分(2017年10月)

    任务说明:递推,层层递进,由基础推向顶层.二分不仅可以用来查找数据,还可以确定最合适的值. P1192 台阶问题 有N级的台阶,你一开始在底部,每次可以向上迈最多K级台阶(最少1级),问到达第N级台阶 ...

  3. 观光公交 2011年NOIP全国联赛提高组(贪心,递推)

    观光公交 2011年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold       题目描述 Description 风景迷人的小城 Y 市 ...

  4. NOIP2013提高组 T2 火柴排队

    一开始看也想不到这居然要用到逆序对,归并排序. 先来看看题目: 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间 ...

  5. 0x02 递推与递归

    [例题]CH0301 递归实现指数型枚举 #include <iostream> #include <cstdio> #include <algorithm> #i ...

  6. 题解报告:hdu 2084 数塔(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这 ...

  7. 再谈循环&迭代&回溯&递归&递推这些基本概念

    循环:不断重复进行某一运算.操作. 迭代:不断对前一旧值运算得到新值直到达到精度.一般用于得到近似目标值,反复循环同一运算式(函数),并且总是把前一 次运算结果反代会运算式进行下一次运算 递推:从初值 ...

  8. 「学习笔记」递推 & 递归

    引入 假设我们想计算 \(f(x) = x!\).除了简单的 for 循环,我们也可以使用递归. 递归是什么意思呢?我们可以把 \(f(x)\) 用 \(f(x - 1)\) 表示,即 \(f(x) ...

  9. (acwing蓝桥杯c++AB组)1.2 递推

    1.2 递推与递归 文章目录 1.2 递推与递归 位运算相关知识补充 pair与vector相关知识补充 题目目录与网址链接 下面的讲解主要针对这道题目的题解AcWing 116. 飞行员兄弟 - A ...

随机推荐

  1. 【洛谷P2147】洞穴勘测

    题目大意:维护 N 个点的无向图,支持动态加边和删边,回答两点的连通性. 题解:线段树分治 + 可撤销并查集 询问可以离线,这是线段树分治的基础. 建立在操作时间轴上的线段树称为线段树分治算法. 本题 ...

  2. sql 创建数据库并对数据库更改排序规则

    use master -- 设置当前数据库为master,以便访问sysdatabases表 go if exists(select * from sysdatabases where name='t ...

  3. 基于tornado python pandas和bootstrap上传组件的mongodb数据添加工具

    总体思路:基于bootstrap4的前端页面上传组件,把excel文件上传至服务器,并利用python pandas读取里面的数据形成字典列表 通过pymongo 接口把数据插入或追加到mongodb ...

  4. mysql向redis导入数据

    数据库结构如下 如果是linux系统下,如此整备数据 SELECT CONCAT( "*10\r\n", '$', LENGTH(redis_cmd), '\r\n',redis_ ...

  5. css-动画,a标签下,文字加下划线,而且动画是由中间向两边扩展开

    效果: html: <div class="warp"> <a class="welcome">期待您的参与</a> < ...

  6. Confluence 6 预览一个文件

    当你浏览一个页面的时候,单击一个图片,文件缩略图或者链接将会运行预览. 预览视图包括了从远程 Web 页面导入的图片文件和已经附加到页面中的文件(尽管有可能这些文件没有在页面中显示). 在预览中你可以 ...

  7. javascript 六种数据类型

    js的数据类型和常见隐式转化逻辑. 一.六种数据类型 原始类型(基本类型):按值访问,可以操作保存在变量中实际的值.原始类型汇总中null和undefined比较特殊. 引用类型:引用类型的值是保存在 ...

  8. 关于synchronized和ReentrantLock之多线程同步详解

    一.线程同步问题的产生及解决方案 问题的产生: Java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),将会导致数据不准确,相互之间产生冲突. 如下例:假设有一个卖票 ...

  9. C++入门经典-例2.4-使用scanf格式输入函数得到用户输入的数据

    1:puts函数可以输出提示信息的字符串. 2:代码如下: // 2.4.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" int main( ...

  10. 【python】windows更改jupyter notebook(ipython)的默认打开工作路径

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...