亚马逊 在线测试题目 amazon (变种的)三叉树的最近公共祖先问题
题目意思就是找一棵按上面链接所示的树对应的上面的两个点的最小公共祖先(LCP,Least Common Father),按照比较大小来依次返回自己的父亲节点就行了。具体看代码:getfather(a)函数是找父亲的代码
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxDepth = ;
long long three[maxDepth] , sum[maxDepth];
void init() {
three[] = ;
sum[] = ;
for(int i=;i<maxDepth;i++)
{
three[i] = three[i-] * ;
sum[i] = sum[i-] + three[i];
} for(int i = ; i < maxDepth; i ++)
{
cout << three[i] << "\t";
}
cout << endl; for(int i = ; i < maxDepth; i ++)
{
cout << sum[i] << "\t";
}
cout << endl;
//cout << "INT_MAX\t" << INT_MAX <<endl;
}
int getfather(long long a) {
if(a <= )
return ;
int i;
for(i=;sum[i]<a;i++)
;
i-- ;
int tmp = (+a-sum[i]) /;
int father = sum[i] - tmp + ;
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 ;
}
其中 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: sum array: INT_MAX
最后,交替计算当前节点的父节点,知道两者的父节点相同为止。
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 (变种的)三叉树的最近公共祖先问题的更多相关文章
- 亚马逊 在线测试题目 amazon
分析:其实就是求矩形中某一个点到其他点的距离加权最小 方法一: 对每一个点求其到其他点的加权距离,然后比较最小.由于有M*N个点,对每一个点求加权距离是O(M*N)的,所以整体时间复杂度是O(M*M* ...
- 亚马逊记AWS(Amazon Web Services)自由EC2应用
很长时间,我听到AWS能够应用,但是需要结合信用卡,最近申请了. 说是免费的,我还是扣6.28,后来我上网查了.认为是通过进行验证.像服务期满将返回. 关键是不要让我进入全抵扣信用卡支付passwor ...
- 最新亚马逊 Coupons 功能设置教程完整攻略!
最新亚马逊 Coupons 功能设置教程完整攻略! http://m.cifnews.com/app/postsinfo/18479 亚马逊总是有新的创意,新的功能.最近讨论很火的,就是这个 Coup ...
- [转]Amazon AWS亚马逊云服务免费一年VPS主机成功申请和使用方法
今天部落将再次为大家介绍如何成功申请到来自亚马逊的Amazon AWS免费一年的VPS主机服务.亚马逊公司这个就不用介绍了,是美国最大的一家网络电子商务公司,亚马逊弹性计算云Amazon EC2更是鼎 ...
- 在亚马逊amazon的AWS上安装Node和MongoDB服务器
在亚马逊amazon的AWS上安装Node和MongoDB服务器 在建立AWS上账号.创建EC2 ,用putty链接上之后,就可以用下面的方法开始安装. !!! 如果不是是自己建立的EC2, 而是由B ...
- 亚马逊云服务器VPS Amazon EC2 免费VPS主机配置CentOS及其它内容
Amazon目前提供为期一年的免费VPS服务,可到地址http://aws.amazon.com 进行申请. 现在对账号申请成功后,对VPS主机配置CentOS的过程做个图文介绍 1.创建实例(Ins ...
- 通过SecureCRT访问亚马逊Amazon EC2主机
亚马逊推出了免费的云主机服务器 Amazon EC2,它是通过安全密钥来访问主机的. 问题是下载的密钥在SecureCRT 上无法直接使用,需要转换. 下面的方法可以在自己的linux主机上生成sec ...
- http://aws.amazon.com/cn/ses/ 亚马逊 营销性非事务邮件发送平台
http://aws.amazon.com/cn/ses/ 亚马逊 营销性非事务邮件发送平台
- Android支付接入(八):Amazon亚马逊支付
下面跟大家一起走一遍Amazon亚马逊的支付,亚马逊目前刚把业务拓展到大陆市场,但这并不代表Amazon支付不成熟,恰恰相反,Amazon的支付流程,支付结果获取及测试另人称赞,支付流程.测试流程简洁 ...
随机推荐
- mysql中的 IN和FIND_IN_SET的查询问题
原来以为mysql可以进行这样的查询select id, list, name from table where 'daodao' IN (list); (一)注:1. table含有三个字 ...
- 第十三章 调试及安全性(In .net4.5) 之 验证程序输入
1. 概述 本章介绍验证程序输入的重要性以及各种验证方法:Parse.TryParse.Convert.正则表达式.JavaScriptSerializer.XML Schemas. 2. 主要内容 ...
- 6.css文本样式
文本样式,只要针对的是文本的效果和文本的方位,即文本样式和文本控制总结起来有一表中的属性可用: 属性名 说明 CSS 版本 text-decoration 装饰文本出现各种划线 1 text-tran ...
- jruby中的异常
先看看ruby中的异常知识: 异常处理raise 例子: raise raise "you lose" raise SyntaxError.new("invalid sy ...
- flask 开发记录
from flask import request 判断method方式 request.method 'POST', ‘GET’ 获取form内容 request.form['form_name' ...
- js的reduce方法,改变头等函数
头等函数:把编程变成了类似搭积木的方式编码,可以使用很少的代码,实现强大的功能函数. eg: getTotal:数组的求和运算. var myArray = [1,2,3,4]; var add = ...
- Xhprof安装笔记(PHP性能监控)
由facebook开源出来的一个PHP性能监控工具,占用资源很少,甚至能够在生产环境中进行部署.它可以结合graphviz使用,能够以图片的形式很直观的展示代码执行耗时 wget http://pec ...
- Unity3d Shortcuts
参考:http://www.ceeger.com/Manual/ 场景视图导航 Click-drag to drag the camera around. 点击拖拽平移场景视图 Hold Alt a ...
- Android--发送短信,并且通知发送方
1.发送短信涉及到权限,我们需要把权限加上 2.当我们发送短信时,不管发送是否成功,接收方是否接收到,系统都会发送广播 3.这时我们注册广播去接收一下就可以了 4.布局文件很简单,里面就两个EditT ...
- 基于opencv 的图片模糊判断代码
#include"cv.h" #include"highgui.h" #include<iostream> using namespace s ...