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 ;
}

最新文章

  1. 使用C#代码生成一个随机的UUID
  2. Winform MDI窗体容器、权限、简单通讯
  3. iOS 隐藏键盘的几种常见方法
  4. python进阶(四)---需要了解的魔法方法
  5. spout详解
  6. nodejs--模块
  7. js闭包,匿名函数概念
  8. YTU 3025: 创建二叉树
  9. AT&amp;amp;T汇编语言——工具及程序组成
  10. 快速搭建企业subversion
  11. UML类图、接口、包、关系
  12. Qt之进程间通信(Windows消息)
  13. ASP.NET MVC @helper使用说明
  14. Gstreamer 数据流线程(GstTask / GstTaskPool)分析
  15. poj 3666 Making the Grade(dp)
  16. Java - 泛型 ( Generic )
  17. 8种排序算法的C#实现
  18. 2.Java集合总结系列:List接口及其实现
  19. 内连接、左外连接、右外连接、全外连接、交叉连接(CROSS JOIN)-----小知识解决大数据攻略
  20. topcoder srm 630 div1 (2-SAT and SCC template)

热门文章

  1. python 运算符与流程控制
  2. Django框架——基础之模型系统(ORM的介绍和字段及字段参数)
  3. LLVM4.0与3.5编译phase对比
  4. ActiveMQ基础01——Linux下载安装ActiveMQ
  5. pat (B)_1002
  6. RAID原理详解
  7. PAT Basic 1018 锤子剪刀布 (20 分)
  8. 使用rpm安装mysql5.6(简单安装 实验使用)
  9. QR分解迭代求特征值——原生python实现(不使用numpy)
  10. linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案