思路

脑子还真的是好东西,自己太笨了

容易发现父亲节点和儿子节点的关系

儿子节点大于父亲节点

儿子节点和父亲节点之差为斐波那契数,且斐波那契数为小于儿子节点的最大的一个

1e12中有60左右的斐波那契数,打出表来查找就好了,深度不超过60

代码

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <algorithm>
  5. #include <map>
  6. #define ll long long
  7. #define FOR(i,a,b) for(int i=a;i<=b;++i)
  8. using namespace std;
  9. const int maxn = 70;
  10. inline ll read() {
  11. ll x = 0, f = 1; char s = getchar();
  12. for (; s < '0' || s > '9'; s = getchar()) if (s == '-') f = -1;
  13. for (; s >= '0' && s <= '9'; s = getchar()) x = x * 10 + s - '0';
  14. return x * f;
  15. }
  16. int n;
  17. ll f[maxn]={1,1};
  18. ll a[maxn];
  19. map<ll,int> dsr;
  20. ll lca(ll x,ll y) {
  21. dsr.clear();
  22. dsr[x]=1;
  23. while(x) {
  24. x=x-f[lower_bound(f+1,f+1+59,x)-f-1];
  25. dsr[x]=1;
  26. }
  27. if(dsr[y]) return y;
  28. while(y) {
  29. y=y-f[lower_bound(f+1,f+1+59,y)-f-1];
  30. if(dsr[y]) return y;
  31. }
  32. return 1;
  33. }
  34. int main() {
  35. FOR(i,2,59) f[i]=f[i-1]+f[i-2];
  36. n=read();
  37. FOR(i,1,n) {
  38. ll x=read(),y=read();
  39. printf("%lld\n",lca(x,y));
  40. }
  41. return 0;
  42. }

P3938 斐波那契的更多相关文章

  1. Luogu P3938 斐波那契

    Luogu P3938 斐波那契 第一眼看到这题,想到的是LCA,于是开始想怎么建树,倒是想出了\(n^{2}\)算法,看了下数据范围,果断放弃 想了想这数据范围,大的有点不正常,这让我想起了当年被小 ...

  2. [luogu]P3938 斐波那契[数学]

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

  3. 2019.8.3 NOIP模拟测试12 反思总结【P3938 斐波那契,P3939 数颜色,P3940 分组】

    [题解在下面] 早上5:50,Gekoo同学来到机房并表态:“打暴力,打暴力就对了,打出来我就赢了.” 我:深以为然. (这是个伏笔) 据说hzoi的人还差两次考试[现在是一次了]就要重新分配机房,不 ...

  4. 洛谷P3938 斐波那契

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

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

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

  6. 【洛谷mNOIP模拟赛Day1】T1 斐波那契

    题目传送门:https://www.luogu.org/problemnew/show/P3938 这题出得特别吼啊~~ 通过打表或者大胆猜想斐波那契数列的一些性质,我们不难发现对于一只兔子$x$,其 ...

  7. C#求斐波那契数列第30项的值(递归和非递归)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. python迭代器实现斐波拉契求值

    斐波那契数列(Fibonacci sequence),又称黄金分割数列,也称为"兔子数列":F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*).例 ...

  9. Ural 1225. Flags 斐波那契DP

    1225. Flags Time limit: 1.0 secondMemory limit: 64 MB On the Day of the Flag of Russia a shop-owner ...

随机推荐

  1. Count the Colors---zoj1610线段树

    题目链接 题意: 求每种颜色有几段线段: 模拟数组: #include<stdio.h> #include<iostream> #include<algorithm> ...

  2. oracle动态视图(一)stat

    1v$mystat,v$sesstat,v$sysstat是用来分别统计用户级,会话级,系统级信息的. SID                                 NUMBER STATI ...

  3. 第二课 eclipse安装

    下载并解压到C:\Program Files\eclipse 目录情况如图所示:

  4. (3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest【待完善】

    (3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest 关键字:Mysql日志分析工具.mysqlsla 常用工具 [1]mysqldumpslow:官方提供的慢 ...

  5. rsync 常用命令

    rsync -auvrtzopgP --progress --delete --exclude-from=exclude.list SRC DST \\保留原文件属性并详细输出 删除那些DST中SRC ...

  6. 配置apache实现对网站某一目录的访问自动跳转到指定目录

    访问www.baidu.com/Hello目录,实际访问/new_balance/hello2 Alias /Hello/ /new_balance/hello2 <Directory /new ...

  7. 查看项目中的laravel的版本

    方法1: 使用php artisan --version 方法2: 在项目文件中找vendor\laravel\framework\src\Illuminate\Foundation\Applicat ...

  8. numpy的ravel()和flatten()函数

    相同点: 两者所要实现的功能是一致的(将多维数组降位一维).这点从两个单词的意也可以看出来,ravel(散开,解开),flatten(变平). In [14]: x=np.array([[1,2],[ ...

  9. Python 之 os.walk()

    原文地址https://www.cnblogs.com/JetpropelledSnake/p/8982495.html          http://www.runoob.com/python/o ...

  10. MVC增加操作日志

    在后台管理中,有一些操作是需要增加操作日志的,尤其是对一些比较敏感的金额类的操作,比如商城类的修改商品金额.删除商品.赠送金额等人工的操作.日志中记录着相关操作人的操作信息,这样,出了问题也容易排查. ...