先说一个规律:

如图将每个月出生的兔子的编号写出来,可以发现一只兔子在哪一列他的父亲就是谁。

每列的首项可以通过菲波那契求得。

然后你就可以像我一样通过这个规律打表每个点的父亲,预处理出倍增数组,倍增求LCA,省掉了建树。期望得分70,实际得分50。

但是其实这已经很接近正解了:对于点i,那么fa[i]+(i所在行首项)-1=i,移项,首项可以二分求得,就可以用Olog60的复杂度找到一个点的父亲节点,所以对于每次询问暴力求就行了。

 #include<algorithm>
#include<iostream>
#include<cstdio>
#define LL long long
#define int LL
using namespace std;
int f[];
int n;
inline int read()
{
int s=;char a=getchar();
while(a<''||a>'')a=getchar();
while(a>=''&&a<=''){s=s*+a-'';a=getchar();}
return s;
}
signed main()
{
// freopen("fibonacci2.in","r",stdin); f[]=;for(int i=;i<=;i++)f[i]=f[i-]+f[i-];
for(int i=;i<=;i++)f[i]++;
n=read();
int a,b;
for(int i=;i<=n;i++)
{
a=read(),b=read();
while(a!=b)
{
if(a==||b==){a=b=;break;}
int i;
i=upper_bound(f+,f+,a)-f;i--;
int fa=a-f[i]+;
i=upper_bound(f+,f+,b)-f;i--;
int fb=b-f[i]+;
if(fa<fb)b=fb;
else if(fb<fa)a=fa;
else {a=fa;b=fb;break;}
}
printf("%lld\n",a);
}
}

HZOJ 斐波那契(fibonacci)的更多相关文章

  1. 2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci)

    2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci) 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 找规律 找两个节点的lca,需 ...

  2. 斐波那契(Fibonacci)数列的几种计算机解法

    题目:斐波那契数列,又称黄金分割数列(F(n+1)/F(n)的极限是1:1.618,即黄金分割率),指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.…….在数学上,斐波纳契数列以如下 ...

  3. 斐波那契(Fibonacci)数列的七种实现方法

    废话不多说,直接上代码 #include "stdio.h" #include "queue" #include "math.h" usin ...

  4. [洛谷P3938]:斐波那契(fibonacci)(数学)

    题目传送门 题目描述 小$C$养了一些很可爱的兔子.有一天,小$C$突然发现兔子们都是严格按照伟大的数学家斐波那契提出的模型来进行繁衍:一对兔子从出生后第二个月起,每个月刚开始的时候都会产下一对小兔子 ...

  5. 如何用Python输出一个斐波那契Fibonacci数列

    a,b = 0, 1 while b<100: print (b), a, b = b, a+b

  6. 斐波那契 (Fibonacci)数列

    尾递归会将本次方法的结果计算出来,直接传递给下个方法.效率很快. 一般的递归,在本次方法结果还没出来的时候,就调用了下次的递归, 而程序就要将部分的结果保存在内存中,直到后面的方法结束,再返回来计算. ...

  7. 【模拟8.03】斐波那契(fibonacci) (规律题)

    就是找规律,发现每个父亲和孩子的差值都是距儿子最大的fibonacc 也是可证的 f[i]表示当前月的兔子总数 f[i]=f[i-1]+f[i-2](f[i-2]是新生的,f[i-1]是旧有的) 然后 ...

  8. (斐波那契总结)Write a method to generate the nth Fibonacci number (CC150 8.1)

    根据CC150的解决方式和Introduction to Java programming总结: 使用了两种方式,递归和迭代 CC150提供的代码比较简洁,不过某些细节需要分析. 现在直接运行代码,输 ...

  9. 关于斐波拉契数列(Fibonacci)

    斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10 ...

随机推荐

  1. 解决驱动版本不对应导致的UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0

    org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is ...

  2. springmvc报404错误No mapping found for HTTP request with URI [/mavenSpringmvc/requesttest] in DispatcherServlet with name 'spring'

    问题404错误的原因有很多种 有这种,后边不带url的 这种一般就是没有进入到controller中 可以在toncat中看到信息 十一月 12, 2018 12:21:25 下午 org.sprin ...

  3. Docker容器中MySQL最大连接数被限制为214的解决方案

    原文:Docker容器中MySQL最大连接数被限制为214的解决方案 一.背景 话说笔者在上次的博客里简单的讲了一下调整MySQL最大连接数的方法.在文章的最后笔者提到了还有一些特殊情况比如说Dock ...

  4. 2019.9.21 csp-s模拟测试49 反思总结

    没赶上昨天的考试,不过我这种人考不考都没有多少提升吧. 挺服气的一场考试,有生以来参加的最让人想笑的考试. T1:养花 取模,区间询问最大值,有点套路化的预处理答案…难点也在预处理上.容易想到分块然后 ...

  5. 【洛谷】P1888 三角函数

    P1888 三角函数 题目描述 输入一组勾股数a,b,c(a≠b≠c),用分数格式输出其较小锐角的正弦值.(要求约分.) 输入输出格式 输入格式: 一行,包含三个数,即勾股数a,b,c(无大小顺序). ...

  6. vue-li+webpack+iview构建项目步骤

    首先安装各类插件 npm install vue-cli -g vue init webpack demo npm install iview --save npm install less styl ...

  7. golang之字符串

    字符串中的每一个元素叫做“字符”.在遍历或者单个获取字符串元素时可以获得字符.严格来说,这并不是 Go语言的一个类型,字符只是整数的特殊用例. (1)最后要注意,字符串值是不可变的.也就是说,我们一旦 ...

  8. 缺氧debug模式开启及功能

    在游戏OxygenNotIncluded_Data文件夹创建一个debug_enable.txt的空文本文档 在缺氧目录下添加debug_enable.txt文件 按删除键就可以开启debug模式 需 ...

  9. python 中初始化二维数组的方法

    最好的方法是: 初始化4*3的二维数组 a = [[0 for col in xrange(3)] for row in xrange(4)] 而不可以用: a = [[0]*3]*4 [0]*3是生 ...

  10. Sql server定时执行某个sql 通过Windows 计划任务(非代理Job方式)

    建立 bat文件.内容如下: osql -s "xxx.xxx.xx.x" -U sa -P sa -d DB -i TruncateSql.sql osql -S "l ...