青蛙

9 其它算法

三世轮回 提交于 2019-12-01 16:50:13
1 青蛙跳台阶 1.1 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级台阶总共有多少种跳法? 1.2 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 来源: https://www.cnblogs.com/sketeton/p/11694126.html

荐读《吃掉那只青蛙》

爱⌒轻易说出口 提交于 2019-12-01 11:58:19
01. 这本书是周筠老师推荐我去读的,听说是其他学校的一位助教在看过此书之后,办事效率都提升了很多。最近正在参加一个百日读书计划,不知不觉已经坚持20多天,计划要读的书籍已经读完,周老师的推荐来得正及时,就花了大概四天的时间去看这本书。全书大概在200页左右,其实按照我阅读书籍的速度应该是一两个小时就能完成,至于我为什么用了四天的时间,我将在后面给大家说。 抱着这本书可能又是一本“心灵鸡汤”的想法打开了它的前言,看了那么多大佬“吹嘘”这本书中的方法,我更加确信这是一篇鸡汤文,但还是抱着试试的心态读了下去。发现书中不会莫名地去激励读者,它是一个个学习工作的方法,通过“吃青蛙”再结合一些真实的案例去分解学习方法,能让读者感觉到每句话都不容错过。由于干货满满,我每读一个章节,就会立即去使用书中的方法,如果读得过快就会看完所有方法,会影响我想要实现它的心态。正如书中所说,高度自律的人通常看到好的方法就会立即去做,而不会拖延。如果我一口气就读完了所有的方法,我肯定不会想去做了,一步步地尝试,每天我都感觉到书中的方法很有用,这会促使我看下去。 02. 说了这么多,我大概给大家讲述几个我已经使用过书中的方法。首先是把工作计划写在笔记本上(要求是纸质的,手机便签不算),这个本子你是能够随时看见的,其实之前我也做过这样的事情,但没能坚持下来。其实我觉得问题出现在你没有实际去实现本子上面的事情

JZOJ3477【NOIP2013初赛】青蛙

帅比萌擦擦* 提交于 2019-12-01 07:46:34
Description 有n片荷叶在池塘上。因为如此这般,有一只年轻的青蛙要在荷叶上跳。它是这样跳的:假如它在第i 号荷叶上,那么它等概率地跳到1 到i 号的荷叶中的一个,跳到1 号荷叶结束。求这只青蛙期望跳多少次结束。 想法: 设f[i]表示第i个荷叶跳到第1个荷叶的期望步数 f[i]=(f[1]+1+f[2]+1+….+f[i]+1)/i i f[i]=∑(j=1~i)f[j]+i(移项) f[i] (i-1)=∑(j=1~i-1)f[j]+i(同时减f[i]) f[i]=∑(j=1~i-1)f[j]/(i-1)+i/(i-1)(同时除以(i-1)) 答案为f[n],n^2 ∑(j=1~i-1)f[j]其实可以用前缀和来记录,O(n) 转自CSDN博主「doggyzheng」的原创文章。 原文链接: https://blog.csdn.net/puppywolf/article/details/78167108 来源: https://www.cnblogs.com/White-star/p/11670064.html

【NOI2000】青蛙过河

主宰稳场 提交于 2019-11-30 22:48:16
题面 不要看洛谷上面的,讲的不清楚。 青蛙的站队和移动方法规则如下: 每只青蛙只能站在荷叶、石墩,或者仅比它大一号的青蛙背上(统称为合法的落脚点); 一只青蛙只有背上没有其它青蛙的时候才能够从一个落脚点跳到另一个落脚点; 青蛙允许从左岸A直接跳到河心的石墩、荷叶和右岸的石墩D上,允许从河心的石墩和荷叶跳到右岸的石墩D上; 青蛙在河心的石墩之间、荷叶之间以及石墩和荷叶之间可以来回跳动; 青蛙在离开左岸石墩后,不能再返回左岸;到达右岸后,不能再跳回; 假定石墩承重能力很大,允许无论多少只青蛙都可呆在上面。但是,由于石墩的面积不大,至多只能有一只青蛙直接站在上面,而其他的青蛙只能依规则1落在比它大一号的青蛙的背上。 荷叶不仅面积不大,而且负重能力也有限,至多只能有一只青蛙站在上面。 每一步只能移动一只青蛙,并且移动后需要满足站队规则; 在一开始的时候,青蛙均站在A上,最大的一只青蛙直接站在石墩上,而其它的青蛙依规则6站在比其大一号的青蛙的背上。 青蛙希望最终能够全部移动到D上,并完成站队。 来源: https://www.cnblogs.com/shxnb666/p/11643654.html

【牛客网-剑指offer】变态跳台阶

六眼飞鱼酱① 提交于 2019-11-30 12:27:54
题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 考点: 递归和循环 分析: 台阶数 跳法 1 1 2 2 3 4 4 8 5 16 6 32 7 64 8 128 ... ... 归纳:f(n)=2*f(n-1); 代码实现: function jumpFloorII(n) { // write code here var fb = [1, 2]; for (var i = 2; i <= n; i++) { fb.push(fb[i - 1]*2); } // console.log(fb[n]) return fb[n-1]; } 来源: https://www.cnblogs.com/xiakecp/p/11585990.html

青蛙的约会

旧街凉风 提交于 2019-11-30 08:34:34
题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。 我们把这两只青蛙分别叫做青蛙A和青蛙B,并且规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米。现在要你求出它们跳了几次以后才会碰面。 输入输出格式 输入格式: 输入只包括一行5个整数x,y,m,n,L 其中0<x≠y < =2000000000,0 < m、n < =2000000000,0 < L < =2100000000。 输出格式: 输出碰面所需要的天数,如果永远不可能碰面则输出一行"Impossible"。 输入输出样例 输入样例#1: 1 2 3 4 5 输出样例#1: 4分析:假设跳了T 次以后,青蛙 1

剑指Offer_跳台阶

醉酒当歌 提交于 2019-11-29 05:43:25
时间限制:1秒 空间限制:32768K 热度指数:487632 本题知识点: 递归 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 斐波那契数列的变形 代码如下: class Solution { public: int jumpFloor(int number) { if(number==0||number==1||number==2) return number; int ans=0,first=1,second=2; for(int i=3;i<=number;i++){ ans=first+second; first=second; second=ans; } return ans; } }; 来源: https://blog.csdn.net/amf12345/article/details/100531849

剑指Offer_变态跳台阶

情到浓时终转凉″ 提交于 2019-11-29 05:43:05
时间限制:1秒 空间限制:32768K 热度指数:393644 本题知识点: 贪心 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 找规律题: 代码如下: class Solution { public: int jumpFloorII(int number) { if(number==0||number==1) return number; int ans=1; for(int i=2;i<=number;i++){ ans*=2; } return ans; } }; 来源: https://blog.csdn.net/amf12345/article/details/100531915

青蛙跳台阶

一世执手 提交于 2019-11-28 20:08:55
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 FrogJumping 青蛙跳台阶 package com.diyo.offer; import java.util.Scanner; /** * 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 FrogJumping 青蛙跳台阶 */ public class FrogJumping { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入青蛙跳多少级台阶:"); int n = scanner.nextInt(); System.out.println(jumpingNum(n)); scanner.close(); } /** * 青蛙跳上一个n级的台阶总共有多少种跳法 * @param n 跳n级台阶 * @return 返回跳发种数,若返回-1代表出错 */ public static int jumpingNum(int n) { if (n == 1) { //如果跳1级台阶1种跳法 return 1; } else if (n =

#(离散化优化线性DP)P1052 过河(提高+/省选-)

我只是一个虾纸丫 提交于 2019-11-28 19:26:39
题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子,青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点: 0,1,…,L 0 , 1 , … , L(其中 L L是桥的长度)。坐标为 0 0的点表示桥的起点,坐标为 L L的点表示桥的终点。青蛙从桥的起点开始,不停的向终点方向跳跃。一次跳跃的距离是 S S到 T T之间的任意正整数(包括 S,T S , T)。当青蛙跳到或跳过坐标为 L L的点时,就算青蛙已经跳出了独木桥。 题目给出独木桥的长度 L L,青蛙跳跃的距离范围 S,T S , T,桥上石子的位置。你的任务是确定青蛙要想过河,最少需要踩到的石子数。 输入格式 第一行有 1 1个正整数 L(1 \le L \le 10^9) L ( 1 ≤ L ≤ 1 0 9 ),表示独木桥的长度。 第二行有 3 3个正整数 S,T,M S , T , M,分别表示青蛙一次跳跃的最小距离,最大距离及桥上石子的个数,其中 1 \le S \le T \le 10 1 ≤ S ≤ T ≤ 1 0, 1 \le M \le 100 1 ≤ M ≤ 1 0 0。 第三行有 M M个不同的正整数分别表示这 M M个石子在数轴上的位置(数据保证桥的起点和终点处没有石子)