题目意思就是找一棵按上面链接所示的树对应的上面的两个点的最小公共祖先(LCP,Least Common Father),按照比较大小来依次返回自己的父亲节点就行了。具体看代码:getfather(a)函数是找父亲的代码

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxDepth = 21;
long long three[maxDepth] , sum[maxDepth];
void init() {   three[0] = 1;  sum[0] = 0;  for(int i=1;i<maxDepth;i++){   three[i] = three[i-1] * 3 ; sum[i] = sum[i-1] + three[i];  }   for(int i = 0; i < maxDepth; i ++) {   cout << three[i] << "\t";}   cout << endl;for(int i = 0; i < maxDepth; i ++) {   cout << sum[i] << "\t";}   cout << endl;//cout << "INT_MAX\t" << INT_MAX <<endl;
}
int getfather(long long a) {   if(a <= 3)return 0;  int i;  for(i=0;sum[i]<a;i++);i-- ;int tmp = (2+a-sum[i]) /3;int father = sum[i] - tmp + 1;return father;
}
int LCP(int a,int b) {while(a != b) {if(a > b) a = getfather(a);else b = getfather(b);}return a;
}
int main() {int a , b;init();while(scanf("%d%d" , &a,&b) != EOF) {//cnt = 0;  int ans = LCP(a , b);printf("%d\n" , ans);}return 0;
}

其中 three array 保存3的指数
sum arry 保存截止到某一行为止,保存的数目-1,因为index是从0开始。

可以看见,sum[20] > INT_MAX 了,所以,sum中只要21个元素就能覆盖所有的 0 到 INT_MAX

同时,由于three[20]和sum[20] > INT_MAX,所以用long long 来保存。

three array:
1       3       9       27      81      243     729     2187    6561    19683   59049   177147  531441  1594323 4782969 1434890743046721        129140163       387420489       1162261467      3486784401
sum array:
0       3       12      39      120     363     1092    3279    9840    29523   88572   265719  797160  2391483 7174452 2152335964570080        193710243       581130732       1743392199      5230176600
INT_MAX 214748364

最后,交替计算当前节点的父节点,知道两者的父节点相同为止。

getFather 的计算也比较简单,和sum array 比较,找到sum[i] > node, 然后i--,知道,节点处于行的上一行。

然后计算offerset=(node-sum[i]+2)/3 就是其距离sum[i]的偏移量,所以father= sum[i]-offerset + 1;

举例:如要查找17的father,查找到 12 < 17 < 39, 所以17 处于sum[2]= 12 的下一行。

offset = (17+2 - 12) /3 = 2, 也就是说 17 的father 距离 sum[2]有两个距离。实际上是一个,

所以father = sum[2]-offset + 1 = 12 -2 + 1 = 11.

亚马逊 在线测试题目 amazon (变种的)三叉树的最近公共祖先问题相关推荐

  1. 亚马逊广告接口 amazon advert api 申请流程

    #亚马逊广告接口 amazon advert api 申请流程 官方文档 https://advertising.amazon.com/API/docs/en-us 申请连接 : https://ad ...

  2. 亚马逊国际获得AMAZON商品详情API,数据接口

    万邦亚马逊国际获得AMAZON商品详情 API 返回值说明 item_get-获得AMAZON商品详情 onebound.amazon.item_get 公共参数 请求地址: 跨境电商平台接口提供商 ...

  3. 亚马逊笔试题目_亚马逊笔试题目

    亚马逊笔试题目 总共两道编程题,全英文描述,时间为两个小时(可以用任何一种语言实现) 第一题:对于一个给定的物品名称X以及顾客的购物清单数组,找出所有购买过X的客户中所买的其他的最多的商品种类.如已知 ...

  4. 亚马逊云科技Amazon S3存储与客户的“独家记忆”

    2023年3月14日是亚马逊云科技Amazon S3的17周岁生日,与这些宏大的.不可量化的概念与母题相比,Amazon S3更像是一位可靠的朋友.作为亚马逊云科技的众多服务中最热门的对象存储服务,1 ...

  5. 亚马逊公司(Amazon)

    亚马逊公司(Amazon)是互联网最大的在线零售商,也是世界上最早以商业化运营模式为用户提供远程云计算平台服务的公司.亚马逊公司的弹性云计算平台(EC2)相对于Google.IBM和微软云计算平台而言 ...

  6. 亚马逊云科技Amazon DeepRacer互联网行业全国冠军诞生

    1月11日,首届亚马逊云科技Amazon DeepRacer自动驾驶赛车互联网行业全国总决赛圆满结束,从全国各地选拔出的9支冠军队伍齐聚滨海三亚,向总决赛的桂冠发起了冲击. 本次比赛沿袭了Amazon ...

  7. sql基础教程亚马逊_针对Amazon,Apple,Google的常见SQL面试问题

    sql基础教程亚马逊 SQL is used in a wide variety of programming jobs. It's important to be familiar with SQL ...

  8. 亚马逊无人超市Amazon Go这次是真的真的开业了

    安妮 编译整理 量子位 出品 | 公众号 QbitAI 来了来了. 经过14个月的尝试摸索,位于西雅图的亚马逊首家无人商店Amazon Go即将在当地时间1月22日七点对外开放,拥有Amazon Go ...

  9. 亚马逊广告接口 amazon advertising

    亚马逊广告接口官方说明:https://advertising.amazon.com/API/docs/en-us/setting-up/account-setup 一:注册aws开发者账号 注册地址 ...

最新文章

  1. oracle11g程序调优纪实
  2. C# 动态调用WebService
  3. 我爱Java系列---【mysql基础约束】
  4. 【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重
  5. java面向对象程序设计(jdk1.6)第三版 目录页数_Java面向对象程序设计/普通高等教育计算机规划教材简介,目录书摘...
  6. powerpoint预览_如何安排PowerPoint幻灯片的时间以进行更有效的演示
  7. 如何才能真正的提高自己,真正成为一名出色的架构师?
  8. 微服务架构设计模式~交互方式
  9. android samba github,安卓手机访问树莓派samba文件共享出错解决
  10. 鼠标监听地图让我创造出个性的风格(地图开发)
  11. 单价数量和总价的公式_小学数学量的计算单位及常用公式表
  12. php function overridden,php在函数外声明global变量有什么用?
  13. 百度云开发clouda学习(一)
  14. Sphinx使用方法
  15. 【优化理论】 共轭梯度下降算法实现
  16. win10停止更新_烦人的Windows10更新,教你如何有效的关闭。
  17. java excel 判断组重复_Java判断Excel某列是否有重复值
  18. DLL文件是什么东东?
  19. nvd3.js 关于子弹图如何格式化刻度线标签问题
  20. 杭电ACM基础题(2075、2076、2078、2081、2083、2088、2090、2092、2093、2095)

热门文章

  1. ie8 js未指明的错误_DD_belatedPNG IE8 js报错问题解决
  2. 孔浩用的mysql工具_孔浩Java教学系列视频教程
  3. EasyUI中的combobox下拉框自适应高度
  4. java filter与servlet,Servlet中的Filter和Listener之间的区别(Java EE)
  5. mysql添加外键约束的语法_Mysql添加外键约束.
  6. js结束当前循环关键词_干货||什么是事件循环机制
  7. 进程外session(session保存在sqlserver)
  8. eureka 客户端服务启动了又失败了_Spring cloud Eureka服务注册与发现详解
  9. 如何使基于梯度下降的机器学习并行化
  10. 贝叶斯、概率分布与机器学习