Dropping Balls(小球下落)】的更多相关文章

A number of K balls are dropped one by one from the root of a fully binary tree structure FBT. Each time the ball being dropped first visits a non-terminal node. It then keeps moving down, either follows the path of the left subtree, or follows the p…
  Dropping Balls  A number of K balls are dropped one by one from the root of a fully binary tree structure FBT. Each time the ball being dropped first visits a non-terminal node. It then keeps moving down, either follows the path of the left subtree…
UVA.679 Dropping Balls (二叉树 思维题) 题意分析 给出深度为D的完全二叉树,按照以下规则,求第I个小球下落在那个叶子节点. 1. 默认所有节点的开关均处于关闭状态. 2. 若有小球下落在关闭状态的节点时,走向其左子树,否则走向其右子树. 3. 小球下落到某个节点,通过后开关反转. 模拟肯定不行,要根据树的特点和下落规则找简单办法.首先一个球下来,开关的状态要么是开要么是关,而且是交替进行,于是小球走的方向,是与小球是当前节点第几个球是有关系的.不难发现,对于每一个节点来…
UVa679 小球下落(树) 题目大意 小球从一棵所有叶子深度相同的二叉树的顶点开始向下落,树开始所有节点都为0.若小球落到节点为0的则往左落,否则向右落.并且小球会改变它经过的节点,0变1,1变0.给定树的深度D和球的个数I,问第I个小球会最终落到哪个叶子节点. 题意容易理解,紫书上给了一个模拟的做法,但这样会超时.后面的想法我觉得很巧妙. 每个小球都会落入根节点,第一个小球一定是向左,第二个向右,所以只看小球编号的奇偶性就可以知道它最终是落在哪一棵子树中.对于进入左子树的小球,通过判断其奇偶…
题目描述 有一棵二叉树,最大深度为D,且所有的叶子深度都相同.所有结点从上到下从左到右编号为1,2,3,-,2eD-1.在结点1处放一个小球,它会往下落.每个结点上都有一个开关,初始全部关闭,当每次有小球落到一个开关上时,它的状态都会改变.当小球到达一个内结点时,如果该结点的开关关闭,则往上走,否则往下走,直到走到叶子结点,如下图所示. 一些小球从结点1处依次开始下落,最后一个小球将会落到哪里呢?输入叶子深度D和小球个数I,输出第I个小球最后所在的叶子编号.假设I不超过整棵树的叶子数:D<=20…
题目描述: 题目思路: 1.直接用数组模拟二叉树下落过程 //超时 #include <iostream> #include <cstring> using namespace std; ; <<maxn] ; int main(int argc, char *argv[]) { int t; scanf("%d",&t) ; while(t--) { int d,n; scanf("%d%d",&d,&n…
紫书P148,例题6-6 Sample Input 4 2 3 4 10 1 2 2 8 128 Sample Output 12 7 512 3 255 这应该不仅仅是一棵完全二叉树,题目中说保证所有叶子节点的深度都相同,所以这是一颗满二叉树. 这里要弄清满二叉树的一些概念和性质,首先,对于一颗满二叉树来说,他每一层的节点数都达到最大,那么对于一个K层的满二叉树来说,他的节点数有(2^k)-1个 而且研究满二叉树和完全二叉树的一个好处在于他可以实现顺序存储,如图中的可以表示为 值   :1 2…
在结点1处放一个小球,它会往下落.每个内结点上都会有一个开关,初始全部关闭,当每次有小球落到一个开关上时,状态都会改变.当小球到达一个结点是,如果结点上的开关关闭,则往左走,否则往右走,直到走到叶子的结点,如图. Sample Input 5 4 2 3 4 10 1 2 2 8 128 -1 Sample Output 12 7 512 3 255 [分析] 对于一个结点K,其左结点和右结点分别为2k和2k+1. 小球落到结点处,先改变,后选择. [代码] #include<cstdio>…
题意:有一颗二叉树,深度为D,所有节点从上到下从左到右编号为1,2,3.....在结点一处放一个小球,每个节点是一个开关,初始全是关闭的,小球从顶点落下,小球每次经过开关就会把它的状态置反,现在问第k个球下落到D层时经过的开关编号 思路:lrj大哥的书上第一种方法是模拟,但是还是有要知道的知识点,对于一个结点k,其左子结点为2k,右结点为2k+1,它的父节点为k/2,深度为d的一颗树包含2^d个结点: 第二种方法,由于第一中方法模拟的运算量太大,所以我们lrj大哥说当I是奇数时,它是往左走的第(…
题目链接 题目大意: 小球从一棵所有叶子深度相同的二叉树的顶点开始向下落,树开始所有节点都为0.若小球落到节点为0的则往左落,否则向右落.并且小球会改变它经过的节点,0变1,1变0.给定树的深度D和球的个数I,问第I个小球会最终落到哪个叶子节点. 解题思路: 完全二叉树有一个重要的性质:对于任意一个节点k,其左节点.右节点的编号分别为2k和2k+1 对于根节点,很容易知道当球的编号为奇数时,球落入左子树,偶数时落在右子树.这样其实对于其它节点看成根节点时也是一样的.比如对于第7个球,为奇数,是第…