中文题意:

有一棵满二叉树,根节点是1,然后依次从上到下,从左到右是2,3,4...10^9,求任意两点i,j的最短距离。

分析:

刚拿到这个题目的时候,看到求二叉树两点间最短距离,马上想到的是bfs求,可是这样的话就需要建树,由于刚开始接触数据

结构,直接不会建树,所以就是一脸的懵逼,想了一会就想到这是一个二叉树,路径无非就是左右,只要不走重复的点,肯定就是最

短路,所以就想到了将二叉树的结点编号放进一个数组中,所以,我只把二叉树最左边的结点(二叉树的临界点)放进数组中去,主

意出界的时候(f[i]>10^9)跳出,病记录下数组的长度,然后遍历数组,找到a所在的层,用一个变量l记录下此时的i,然后循环让b去往

a所在的层上跳跃,并进行num++,当a,b同层的时候,利用a,b同时向根节点跳跃,并进行计数,而此时是num+=2。不过这个代码写出

来后竟然是超时的,想了一下,可能是测试数据太多了,10000,于是换了种思路,以下上超时代码:

超时代码:

#include <iostream>
#include <cstring>
using namespace std;int f[10000];//数组,放结点的值
int len,a,b,t;int main()
{f[0]=1;//根节点放到数组第一个位置for(int i=1;; i++){f[i]=f[i-1]*2;//将最左边的结点一次放进数组if(f[i]>1e9)//出界{len=i-1;//返回到界内break;}}cin>>t;while(t--){cin>>a>>b;if(a>b)swap(a,b);int cnt=0;int l;for(int i=0; i<len; i++){if(a>=f[i]&&a<f[i+1])//c所在二叉树的层{l=i;break;}}while(1){if(b>=f[l]&&b<f[l+1])//b在a所在的二叉树的层break;b/=2;//b跨层找acnt++;}while(a!=b)//a,b同层{a/=2;b/=2;cnt+=2;}cout<<cnt<<endl;}return 0;
}

分析&&思路2:

由于本题中的测试数据太多,所以用数组来存简直就是浪费内存和时间,所以就想到了,直接将较大的点的值进行跳跃,如果能正好跳到在同层并且相等,截止,换另一个较大的值进行跳跃,知道两个点同时跳到相等为止,每一次跳,都进行计数。下面上代码:

AC代码:

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{int T,n,m;scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);int ans=0;while(n!=m){if(n>m) n/=2;else m/=2;ans++;}printf("%d\n",ans);}
}

经验:其实本题实际上是一个数学思维的水题,不牵扯数据结构,只是太容易惯性思维了,还是动脑子太少的原因。

山东省第五届ACM大赛--Problem E: Full Binary Tree相关推荐

  1. 山东省第五届ACM大学生程序设计竞赛 Colorful Cupcakes

    Colorful Cupcakes Time Limit: 2000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Beaver Bindu has N cupc ...

  2. 山东省第五届ACM大学生程序设计竞赛 Weighted Median

    Weighted Median Time Limit: 2000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 For n elements x1, x2, .. ...

  3. 2014山东省第五届ACM省赛

    现在只会做8题....ABCDEFGJ 题目在sdut 2877-2886 A. angry birds again and again 链接 http://acm.sdut.edu.cn/sduto ...

  4. SDUT 2879 Colorful Cupcakes (2014年山东省第五届ACM大学生程序设计竞赛)

    Colorful Cupcakes Time Limit: 2000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Beaver Bindu has N cupc ...

  5. 山东省第五届ACM省赛题——Colorful Cupcakes(四维dp)

    题目描述 Beaver Bindu has N cupcakes. Each cupcake has one of three possible colors. In this problem we ...

  6. 山东省第八届acm大赛 F题 (SDUT 3898)

    quadratic equation Time Limit: 2000MS Memory Limit: 131072KB Problem Description With given integers ...

  7. Balanced Binary Tree leetcode java

    题目: Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced bin ...

  8. LeetCode: 111. Minimum Depth of Binary Tree

    题目 Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced bina ...

  9. 655. Print Binary Tree 解题报告(树)

    第一部分:搜索.遍历 [例子1]655. Print Binary Tree Example 1: Input:1/2 Output: [["", "1", & ...

  10. 【leetcode】Balanced Binary Tree(middle)

    Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...

最新文章

  1. Java案例——字符串拼接
  2. maple linux,Linux下面如何安装maple,mathematica,matlab这类软件?
  3. 分布式概念-分布式事务,并发处理协议
  4. 查看oracle所有实例_Oracle目录结构与系统用户-数据库(3)
  5. java怎么编写软键盘_安卓手机软键盘操作
  6. 基于visual c++之windows核心编程代码分析(42)windows下进程的身份切换
  7. id3与软件测试,ID3算法的实现
  8. Seata AT模式
  9. BZOJ1031: [JSOI2007]字符加密Cipher
  10. Doker : Docker 容器与宿主机共享文件
  11. 北斗如何帮助电动车精细管理?北斗高精度定位显神威
  12. 对于火灾和火焰检测的初步学习
  13. JAVA爬虫爬取国家统计局行政区划数据(2021年最新数据)
  14. 单总线CPU微程序条件判别测试逻辑
  15. 免费领取百度云盘2048G永久空间,永久离线下载特权
  16. 电力监控系统如何在锡林郭勒配电工程中采集相关遥测、遥信和SOE等数据完成监视、控制和预警?
  17. 【STL】string详解(string类常用的操作函数、构造函数、赋值操作、子符串的拼接、查找和替换、比较、存取、插入和删除、获取)
  18. nginx后端节点的健康检查
  19. 分销小程序定制开发|分销系统开发对商家有哪些好处?
  20. android 11中置入第三方应用apk

热门文章

  1. composer 进行tp6的安装
  2. 计算机文件无法移动,电脑上不能拖动文件怎么办 电脑上不能拖动文件如何解决...
  3. 计算机专业英文授课,计算机专业全英文授课分析
  4. atom n270 cpu linux,继续改造ATOM N270增加千兆口自制软路由
  5. 2021-03-09
  6. etimedout 运行_googleapis 谷歌统计 nodejs 遇到 ECONNRESET和 ETIMEDOUT
  7. 电子签名的制作和使用
  8. free、detele与野指针
  9. 大数据讲课笔记5.5 MR案例——倒排索引
  10. 关于异常结存的问题,库存结存为什么会产生数量为0,成本不为0的异常情况