UVa679 小球下落(树)

题目大意

小球从一棵所有叶子深度相同的二叉树的顶点开始向下落,树开始所有节点都为0。若小球落到节点为0的则往左落,否则向右落。并且小球会改变它经过的节点,0变1,1变0。给定树的深度D和球的个数I,问第I个小球会最终落到哪个叶子节点。

题意容易理解,紫书上给了一个模拟的做法,但这样会超时。后面的想法我觉得很巧妙。

每个小球都会落入根节点,第一个小球一定是向左,第二个向右,所以只看小球编号的奇偶性就可以知道它最终是落在哪一棵子树中。对于进入左子树的小球,通过判断其奇偶性也可以判断它会继续向左还是向右。依此类推,直到小球落到叶子上。

 #include<iostream>
using namespace std;
int main()
{
int n;
while(cin>>n && n != -)
{
while(n--)
{
int D,I;///D为叶子深度,I为小球个数
cin>>D>>I;
int deep = ;
int ans = ;
while(true)
{
deep++;
if(I%)///第一个进入
{
ans *= ;///向左走
I = (I + )/;
}else{///第二个进入
ans = ans* + ;
I = I/;
}
if(deep == D)///到达叶子节点
{
cout<<ans<<endl;
break;
}
}
}
} return ;
}

UVa679 小球下落(树)的更多相关文章

  1. 【UVa-679】小球下落——二叉树的编号

    在结点1处放一个小球,它会往下落.每个内结点上都会有一个开关,初始全部关闭,当每次有小球落到一个开关上时,状态都会改变.当小球到达一个结点是,如果结点上的开关关闭,则往左走,否则往右走,直到走到叶子的 ...

  2. UVa 679 小球下落 简单模拟题,树

    题目大意:给你一个完全二叉树,并且给他们编号,编号规则为左子树为2*k,右子树为2*k+1,每一个节点 上都有一个开关,初始时开关都处于关闭状态,小球碰到节点就会改变该点的开关的状态.然后给你I个小球 ...

  3. 6-6 小球下落 uva679

    较为简单的找规律题目 开始认识二叉树  虽然这题和二叉树没有啥关系 #include<bits/stdc++.h> using namespace std; int main() { in ...

  4. 6_6 小球下落(UVa679)<完全二叉树编号>

    有K个球从一完整二叉树(fully binary tree,FBT)的树根(root)一个一个往下掉.当这个球遇到非终端节点时,可能往左子树跑,也可能往右子树跑,如此直到这颗球到达终端节点(也就是树叶 ...

  5. 小球下落(Dropping Balls, Uva 679)

    题目描述 有一棵二叉树,最大深度为D,且所有的叶子深度都相同.所有结点从上到下从左到右编号为1,2,3,-,2eD-1.在结点1处放一个小球,它会往下落.每个结点上都有一个开关,初始全部关闭,当每次有 ...

  6. Dropping Balls(小球下落)

    紫书P148,例题6-6 Sample Input 4 2 3 4 10 1 2 2 8 128 Sample Output 12 7 512 3 255 这应该不仅仅是一棵完全二叉树,题目中说保证所 ...

  7. 小球下落 (Dropping Balls,UVA 679)

    题目描述: 题目思路: 1.直接用数组模拟二叉树下落过程 //超时 #include <iostream> #include <cstring> using namespace ...

  8. UVa 679 小球下落

    题意:这道题规律性极强,虽然是二叉树,但是可以用模拟来写. 1<<20 意思是1的二进制左移20位,即2的20次方. 对于二叉树中一个节点 k ,其左节点,右节点的编号分别是2k 和 2k ...

  9. #C++初学记录(树和二叉树)

    二叉树的编号 例题 6-6 小球下落问题 有一棵二叉树,最大深度为D,且所有叶子深度都相同.所有节点从上到下,从左到右编号为1,2,3,4,....,2^D-1.在节点1处放置小球,他会往下落.每个节 ...

随机推荐

  1. vue中添加与删除,关键字搜索

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. js截取字符串相关的知识点

    截取字符串中的数字 1.使用parseInt() var str ="4500元"; var num = parseInt(str); console.log(num);//450 ...

  3. 免费FQ工具

    这里使用免费的`梯子` 下载赛风 选择Windows下载 下载好之后,直接点击打开,它会自动连接,什么也不要设置,下载的就是一个exe文件,连接成功会打开一个网页,不用管

  4. JVM常用指标查询

    一.what‘s going on in Java Application 当系统卡顿,应用莫名被杀掉,我们应该怎么排查?在我已知的系统挂掉的情况,只经历过两种:1.内存申请不了(OOM):2.CPU ...

  5. 第二篇.1、python基础之数据类型与变量

    一.变量 1 什么是变量之声明变量 #变量名=变量值 age=18 gender1='male' gender2='female' 2 为什么要有变量 变量作用:“变”=>变化,“量”=> ...

  6. cmd完成拷贝文件,并生成两个快捷脚本

    @echo off@echo ------------------------------ @echo 正在创建目录 color 03if exist y:\00程序数据备份 ( md y:\00程序 ...

  7. ecshop新版不能在模板文件.dwt和.lbi中直接添加php代码的解决方法

    ecshop新版不能在模板文件.dwt和.lbi中直接添加php代码了,为什么呢? 因为直接在模板中加入php函数和代码,没有经过过滤,容易造成安全隐患.程序源码安全是非常重要的. 不过如果有朋友希望 ...

  8. tensorflow各版本下载地址

    https://pypi.org/project/tensorflow-gpu/1.13.0/#files 把13改对你想要的版本

  9. [uboot] (第三章)uboot流程——uboot-spl代码流程 后续2018版本分析

    board_init_f在/u-boot-2018.07-fmxx/arch/arm/mach-fmxx/spl.c中定义 board_init_f之后,和转载的部分有出入: u-boot-2018. ...

  10. 如何卸载Win10 RS3上预装的office2016

    原因分析: 由于微软在Win10 1709(RS3版本)上改变了office 2016家庭和学生版的预装方式(预装office 2016改为Windows Store应用商店的即点即用程序),无法使用 ...