【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 ...
随机推荐
- poj 2311 Cutting Game 博弈论
思路:求SG函数!! 代码如下: #include<iostream> #include<cstdio> #include<cmath> #include<c ...
- 初学Ajax(三)
$.ajax() $.ajax()是所有ajax方法中最底层的方法,所有其他方法都是基于$.ajax()方法的封装.这个方法只有一个参数,传递一个各个功能键值对的对象. $.ajax()方法对象参数表 ...
- lintcode :最长公共前缀
题目 最长公共前缀 给k个字符串,求出他们的最长公共前缀(LCP) 样例 在 "ABCD" "ABEF" 和 "ACEF" 中, LCP ...
- windows条件下,Ping加上时间戳,并保存到文件,适用于测试网络
在c盘下面新建文件 ping.vbs 在 ping.vbs中输入代码如下: Dim args, flag, unsuccOut args="" otherout="&qu ...
- React表单元素的使用
一. <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF ...
- wordpress可视化编辑器的开启/关闭
这个可视化编辑器还真是有些难找,在后台菜单“用户”->"我的个人资料" 对以下勾选即可
- Linux远程文件传输
linux系统中,难免会遇到一些要将某文件通过网络传送给其他主机的情况,而恰好两台主机 都是linux系统的时候,我们就可以直接使用scp命令来传输文件到另一台主机了. scp命令用于在网络中安全的传 ...
- J2ee 巴巴网站制作(二)
导入spring jar包:
- USACO Section 3.2: Stringsobits
这题看了网上的答案的.还是很巧妙的 /* ID: yingzho1 LANG: C++ TASK: kimbits */ #include <iostream> #include < ...
- Android 内存相关 onTrimMemory,onLowMemory,MemoryInfo()
参考: Android Application生命周期学习 Android中如何查看内存(上) Android OnLowMemory和OnTrimMemory OnLowMemory OnLowMe ...