HDU 2044 一只小蜜蜂...(递推,Fibonacci)

题意:中文题。

析:首先要想到达第 n 个蜂房,那么必须经 第 n-1 或第 n-2 个蜂房,那么从第 n-1 或第 n-2 个蜂房到达第 n 个,都各自有一条路线,

所以答案就是第 n-1 + 第 n-2 个蜂房,即 ans[i] = ans[i-1] + ans[i-2];注意要用long long 因为超int了。

代码如下:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <set>
#include <cstring>
#include <cmath>

using namespace std;
typedef long long LL;
const int maxn = 50 + 5;
LL ans[maxn];

void init(){
    ans[1] = 1;
    ans[2] = 1;
    for(int i = 3; i < 50; ++i)  ans[i] = ans[i-1] + ans[i-2];
}

int main(){
    init();
    int T, a, b;  cin >> T;
    while(T--){
        scanf("%d %d", &a, &b);
        printf("%lld\n", ans[b-a+1]);
    }
    return 0;
}
时间: 2024-11-05 19:26:11

HDU 2044 一只小蜜蜂...(递推,Fibonacci)的相关文章

hdu 2044 一只小蜜蜂...(简单dp)

一只小蜜蜂... Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 73139    Accepted Submission(s): 26257 Problem Description 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行.请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数.其中,蜂房的结构如下所示. Input 输入数据的第

hdu 2044 一只小蜜蜂... (java)

问题: 第一次用的int没能过,改成long就行了,每次不知道能否够用时就测一个极限值 一只小蜜蜂... Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 46893    Accepted Submission(s): 17087 Problem Description 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行.请编程计

HDU 2044 一只小蜜蜂... 简单动态规划

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2044题目描述:有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行.请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数.其中,蜂房的结构如下所示. 输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0<a<b<50).对于每个测试实例,请输出蜜蜂从蜂房a爬到蜂房b的可能路线数,每个实例的输出占一行.题目分析:对于这道题目,给我a和b,求从蜂房a到蜂房b

HDU - 2044 一只小蜜蜂...

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2044 分析: 从1-2有1种方法,从1-3可以由1-3或1-2-3,总共2种,由1-4可由1-2-3-4或1-3-4或1-2-4总共3种,可以这样想: 想到达4必需到达3或2,然后计算到达3或2的所有路线,加起来就是所有的路线数,f(4)=f(3)+f(2):由此可以想到斐波那契数列 Sample Input 2 1 2 3 6 Sample Output 1 3 *****************

HDU 2044 一只小蜜蜂... HDU 2041 超级楼梯

推公式得出斐波那契数列 #include<stdio.h> __int64 dp[60]; int main(){ int n; #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); #endif int a,b,T; scanf("%d",&T); while(T--){ scanf("%d%d",&a,&b); if(a>b){ pri

hdu 4869 Turn the pokers(递推&amp;组合数学&amp;逆元)

Turn the pokers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1279    Accepted Submission(s): 466 Problem Description During summer vacation,Alice stay at home for a long time, with nothing t

hdu 1284 钱币兑换问题 (递推 || DP || 母函数)

钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5069    Accepted Submission(s): 2868 Problem Description 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法. Input 每行只有一个正整数N,N小于32768. Outpu

HDU Tickets(简单的dp递推)

Tickets Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 972    Accepted Submission(s): 495 Problem Description Jesus, what a great movie! Thousands of people are rushing to the cinema. However,

hdu 2050 折线分割平面 (递推)

折线分割平面 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 15709    Accepted Submission(s): 10836 Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平面