679 - Dropping Balls
来源:互联网 发布:linux vim 新建文件 编辑:程序博客网 时间:2024/05/16 11:53
Dropping Balls
PS:因为该题排版较麻烦,这里给出OJ网址:UVa679 - Dropping Balls
有一棵二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从上到下从左到右编号为1, 2, 3,…, 2D-1。在结点1处放一个小球,它会往下落。每个内结点上都有一个开关,初始全部关闭,当每次有小球落到一个开关上时,状态都会改变。当小球到达一个内结点时,如果该结点上的开关关闭,则往左走,否则往右走,直到走到叶子结点,如图6-2所示。
一些小球从结点1处依次开始下落,最后一个小球将会落到哪里呢?输入叶子深度D和小球个数I,输出第I个小球最后所在的叶子编号。假设I不超过整棵树的叶子个数。D≤20。输入最多包含1000组数据。
样例输入:
4 2
3 4
10 1
2 2
8 128
16 12345样例输出:
12
7
512
3
255
36358
#include <cstdio>// 该方法会超时// #include <cstring>// using namespace std;//const int maxDepth = 20;//// 树//int tree[1 << maxDepth];////int main() {// // l组数据// int l;// // D层满二叉树,I个小球// int D,I;// scanf("%d", &l);// while(l--) {// scanf("%d%d", &D, &I);// memset(tree, 0, sizeof(tree));// // 最大结点编号// int n = (1 << D) - 1;// int k;// for(int i = 0; i < I; i++) {// // 结点当前位置// k = 1;// while(true) {// // 置反// tree[k] = !tree[k];// // false->true,走左子树// // true->false,走右子树// if(tree[k]) {// k = k * 2;// } else {// k = k * 2 + 1;// }//// if(k > n) {// break;// }// }// }// // 最后一次的叶子节点编号// printf("%d\n", k / 2);// }// return 0;//}int main() { // l组数据 int l; // D层满二叉树,I个小球 int D,I; scanf("%d", &l); while(l--) { scanf("%d%d", &D, &I); int k = 1; // 模拟路径 for(int i = 0; i < D - 1; i++) { // 如果I为奇数,则向左子树移动 // I为偶数,则向右子树移动 if(I % 2) { k *= 2; I = (I + 1) / 2; } else { k = k * 2 + 1; I /= 2; } } printf("%d\n", k); } return 0;}
0 0
- UVA 679 - Dropping Balls
- uva 679 - Dropping Balls
- UVa 679 Dropping Balls
- UVA - 679 Dropping Balls
- UVa 679 Dropping Balls
- UVa 679 - Dropping Balls
- UVa 679 - Dropping Balls
- UVa 679 - Dropping Balls
- UVa 679 - Dropping Balls
- 679 - Dropping Balls
- uva 679 Dropping Balls
- Uva - 679 - Dropping Balls
- UVA 679 - Dropping Balls
- UVa-679 Dropping Balls
- UVa 679 Dropping Balls
- UVa 679 - Dropping Balls
- 679 - Dropping Balls
- uva 679 Dropping Balls
- linux 下查看系统资源和负载,以及性能监控
- leetcode_c++:3Sum Closest(016)
- Windows 08R2_破解管理员密码
- Hue-安装-配置-添加Oozie
- 【LeetCode】113. Path Sum II 基于Java和C++的解法及分析
- 679 - Dropping Balls
- Binder学习笔记(二)——defaultServiceManager()返回了什么?
- PS基础知识三
- Java内部类引用外部类中的局部变量为何必须是final问题解析
- 跟我一起学习MySQL技术内幕(第五版):(第三章学习日记4)
- Mysql下载与版本选择
- Android中handler引用记录
- fragment生命周期
- 怎样快速导入Anroid Studio 项目