【UVa-679】小球下落——二叉树的编号
在结点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>
#include<cstring>
const int maxd = ;
int s[<<maxd];
int main(){
int D,I;
while(scanf("%d%d",&D,&I)== && (D+I) != ){ memset(s,,sizeof(s));
int k,n = (<<D) - ;
for(int i = ;i < I;i++ ){
k = ;
while(true){
s[k] = !s[k];
k = s[k] ? k* : (k*+);
if(k > n) break;
}
}
printf("%d\n",k/);
}
return ;
}
【总结】
"<<" 用法:
1.重载输出流运算符
2.数据移位运算符:x = i << 4 ; //将 i 的值左移4位放大2的4次方
memset(s,0,sizeof(s));
//一般用在对定义的字符串进行初始化
memst( "初始化字符串","初始化字符" ,"初始化字符串的内存空间长度" );
sizeof():计算字符串数组的长度
sizeof 与 strlen区别:
har str[]="";//注意这里str大小因该大于等于11,应考虑'\0'在内,否则编译器会报错
int a=strlen(str); //a=10; >>>> strlen 计算字符串的长度,以结束符 0x00 为字符串结束。
int b=sizeof(str); //而b=11; >>>> sizeof 计算的则是分配的数组 str[11] 所占的内存空间的大小,不受里面存储的内容改变。
//解法二: (目前还没领悟 = =)
// I,当I是奇数时,它是往左走的第(I+1)/2个小球;
// 当I是偶数时,它是往右走的第I/2个小球 #include<cstdio>
int main(){
int D,I;
while((scanf("%d%d",&D,&I)==) && D+I != ){
int k = ;
for(int i = ;i < D-;i++)
if(I%) {k*=; I = (I+)/;}
else {k = k*+; I /= ; }
printf("%d\n",k);
}
return ;
}
【UVa-679】小球下落——二叉树的编号的更多相关文章
- UVa 679 小球下落 简单模拟题,树
题目大意:给你一个完全二叉树,并且给他们编号,编号规则为左子树为2*k,右子树为2*k+1,每一个节点 上都有一个开关,初始时开关都处于关闭状态,小球碰到节点就会改变该点的开关的状态.然后给你I个小球 ...
- UVa 679 小球下落
题意:这道题规律性极强,虽然是二叉树,但是可以用模拟来写. 1<<20 意思是1的二进制左移20位,即2的20次方. 对于二叉树中一个节点 k ,其左节点,右节点的编号分别是2k 和 2k ...
- Uva 679 Dropping Ballls 二叉树的编号
这个程序常规处理起来数据量很大,I可以高达2^D-1 /* ....... */ 里面的代码块据此避免了开太大的数组 做太多的循环 #include<cstdio> #include< ...
- UVA 679 Dropping Balls 由小见大,分析思考 二叉树放小球,开关翻转,小球最终落下叶子编号。
A number of K balls are dropped one by one from the root of a fully binary tree structure FBT. Each ...
- UVA.679 Dropping Balls (二叉树 思维题)
UVA.679 Dropping Balls (二叉树 思维题) 题意分析 给出深度为D的完全二叉树,按照以下规则,求第I个小球下落在那个叶子节点. 1. 默认所有节点的开关均处于关闭状态. 2. 若 ...
- UVa 二叉树的编号(二叉树)
原题链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- UVa 679 【思维题】
UVA 679 紫书P148例题. 题目大意:小球从一棵所有叶子深度相同的二叉树的顶点开始向下落,树开始所有节点都为0.若小球落到节点为0的则往左落,否则向右落.并且小球会改变它经过的节点,0变1,1 ...
- UVa679 小球下落(树)
UVa679 小球下落(树) 题目大意 小球从一棵所有叶子深度相同的二叉树的顶点开始向下落,树开始所有节点都为0.若小球落到节点为0的则往左落,否则向右落.并且小球会改变它经过的节点,0变1,1变0. ...
- Uva 679 Dropping Balls (模拟/二叉树的编号)
题意:有一颗二叉树,深度为D,所有节点从上到下从左到右编号为1,2,3.....在结点一处放一个小球,每个节点是一个开关,初始全是关闭的,小球从顶点落下,小球每次经过开关就会把它的状态置反,现在问第k ...
随机推荐
- C. Tourist's Notes
题目链接 题意:n天内登山,相邻两次登山的高度差的绝对值小于等于1,也就是说每次高度变化只能是:0,1,-1.我们已经知道n天中部分天数人所在的山的高度,求最大的登山高度. 输入: n m n 是天 ...
- Android核心分析之十五Android输入系统之输入路径详解
Android用户事件输入路径 1 输入路径的一般原理 按键,鼠标消息从收集到最终将发送到焦点窗口,要经历怎样的路径,是Android GWES设计方案中需要详细考虑的问题.按键,鼠标等用户消息 ...
- RabbitMQ安装与搭建
1.下载Erlang,最新版本是erl8.1 ,地址:http://erlang.org/download/otp_win64_19.1.exe 网上很多资料说安装后要配置环境变量,不过我安装最新的版 ...
- Mysql笔记——DML
数据操纵语言DML(Data Manipulation Language),用户通过它可以实现对数据库的基本操作. ========================== 1 插入数据 语法:INSER ...
- WAS集群服务的关闭与启动
WAS集群服务的关闭与启动 欢迎转载,转载时请务必注明出处(http://blog.csdn.net/huangyanlong),否则作者保留追究版权法律责任. 表述有错误之处,请您留言或邮件(hyl ...
- 分析函数(Analytic Functions)
在OLAP这类系统或者DW这类数据库中,作为某份报表的数据源,我们常常需要在某个存储过程中编写复杂的运算代码来汇总数据.分析函数便具备这样的能力,引用多行的数据值来进行多层面的聚合运算,在数据子集中进 ...
- WordPress搭建Personal Blog 个人博客
早就想搭建一个专属于自己的博客了,用来记录自己生活.学习的点点滴滴.之所以选WordPress,主要是因为它可以支持Latex,而且特别喜欢其简约的风格. WordPress有个the famous ...
- Git工作流指南:Gitflow工作流 Comparing Workflows
Comparing Workflows The array of possible workflows can make it hard to know where to begin when imp ...
- c# 网络是否连接
c# 网络是否连接 方案一: using System; using System.Collections.Generic; using System.Linq; using System.Text ...
- lcd ram/半反穿技术解析【转】
转自:http://bbs.meizu.cn/viewthread.php?tid=3058847&page=1 我的话题应该会比较长一些.但是大致板块如下:1.LCD RAM;-->此 ...