数据结构
来源:互联网 发布:自学数据分析师 编辑:程序博客网 时间:2024/05/11 19:17
NYOJ-63 小猴子下落【满二叉树】标签: 测试优化2012-04-24 22:00 1946人阅读 评论(1) 收藏 举报分类:数据结构(37)版权声明:本文为博主原创文章,未经博主允许不得转载。题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=63解题思路:很久前做过这道题,是用的模拟法做的。因为这道题数目的测试数据比较少,所以暴力就过了。但是如果测试数据很大时,超时是明显的。因为D<=20,所以需要遍历的为2的19次方乘以19,如果有1000组测试数据,就肯定挂了。今天看到了一种优化,非常巧妙。因为每个小猴子都是从根节点向下,它必然有两种选择:左、右。而且有规律,它前面的两个猴子一定是左,右。所以在每个节点进入根节点时,我们只需要判断这个点的奇偶性就知道它的方向了。然后它进入根节点的下一层,依然有两种选择,同样的判断,但是数据规模减少一半(每进入1层,舍弃另一个子树,必然减少一半,因为左右的个数相同或者相差1),这样,我们只需要判断这个猴子是第几个进入该层,然后判断奇偶即可。代码如下:[cpp] view plain copy #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<cmath> #include<cstdlib> using namespace std; int main() { int d, I; while(scanf("%d %d", &d, &I) && (d + I)) { int k = 1; for(int i = 0; i < d - 1; ++i) //倒数第二层 if(I % 2) //左子树 k <<= 1, I = (I + 1) >> 1; //第几个进入左子树 else //右子树 k = (k << 1) + 1, I >>= 1; //第几个进入右子树 printf("%d\n", k); } return 0; }
0 0
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- Navicat for mysql的乱码问题+linux下mysql乱码问题
- WebGL笔记
- Activity 之间传类
- java解析xml文件
- Ubuntu下编译源码
- 数据结构
- Windows下解决No module named google.protobuf.internal
- memcache+nighx
- 深度学习在目标跟踪中的应用[2016年优秀文章概述]
- 由iOS开发转到React-native的过程_之环境配置
- Android 资源大全中文版
- H5 跳转web view固定页面
- C++教程 DirectX11Frame属性
- 常用的iOS第三方框架