UVa-679 Dropping Balls 二叉树
题目链接:https://vjudge.net/problem/UVA-679
题意:
有一棵二叉树,所有节点从上至下,从左到右依次编号为1、2...2D-1,叶子深度都相同,有I个小球,从根节点依次下落,若通过某一节点时节点状态为关闭,则小球向左走,否则向右走,直到叶节点。刚开始所有节点都是关闭的,问最后一个小球会落在哪里(即所在叶节点编号)
分析:
① 首先想到模拟I个小球的下落过程,但结果肯定是TLE,因为I可高达219,每一个小球最多下落19层,所以每组测试总下落次数可达219*19次,测试数据又最多有1000组。
②然后找规律,发现可直接根据I计算出最后的位置:对于某一个小球,如果它是第X个到达某一节点的,若X为奇数,则此球会向左走,此时它是第(X+1) / 2个到达下一位置的小球,若X为偶数则向右走,此时它是第X / 2个到达下一位置的。所以这道题可直接对于第I个小球只进行一趟循环,通过上述规则不断确定要走的方向,最后求得落到的叶节点的编号。
代码如下
//Uva-679
#include <iostream>
#include <cstdio>
using namespace std; int main(void) {
int D, I;
int n;
scanf("%d", &n);
while(n--) {
scanf("%d%d", &D, &I);
int k = ;
for(int i = ; i < D-; i++) { //直接模拟最后一个小球的运动,一共需要下落D-1层
if(I % != ) {//判断这是第几个到达这一层此位置的小球,若为奇数,则向左走
k = *k;
I = (I+) / ;// 这是此位置第 (I+1) / 2个向左走的小球
}
else {//为偶数,则向右走
k = *k + ;
I = I / ;//这是第I/2个向右走的小球
}
}
printf("%d\n", k);
}
}
UVa-679 Dropping Balls 二叉树的更多相关文章
- UVA.679 Dropping Balls (二叉树 思维题)
UVA.679 Dropping Balls (二叉树 思维题) 题意分析 给出深度为D的完全二叉树,按照以下规则,求第I个小球下落在那个叶子节点. 1. 默认所有节点的开关均处于关闭状态. 2. 若 ...
- 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 (模拟/二叉树的编号)
题意:有一颗二叉树,深度为D,所有节点从上到下从左到右编号为1,2,3.....在结点一处放一个小球,每个节点是一个开关,初始全是关闭的,小球从顶点落下,小球每次经过开关就会把它的状态置反,现在问第k ...
- UVa 679 - Dropping Balls【二叉树】【思维题】
题目链接 题目大意: 小球从一棵所有叶子深度相同的二叉树的顶点开始向下落,树开始所有节点都为0.若小球落到节点为0的则往左落,否则向右落.并且小球会改变它经过的节点,0变1,1变0.给定树的深度D和球 ...
- UVA - 679 Dropping Balls(二叉树的编号)
题意:二叉树按层次遍历从1开始标号,所有叶子结点深度相同,每个结点开关初始状态皆为关闭,小球从根结点开始下落(小球落在结点开关上会使结点开关状态改变),若结点开关关闭,则小球往左走,否则往右走,给定二 ...
- UVa 679 Dropping Balls (例题 6-6)
传送门:https://uva.onlinejudge.org/external/6/p679.pdf 题意:在一颗结点带开关的完全二叉树上扔球,初始时开关为关闭状态,树的深度为D(1 <= D ...
- Uva 679 Dropping Balls
这道题如果模拟着来写,思路很简单 #include <iostream> #include <cstring> using namespace std; int T,D,I,c ...
- Uva 679 Dropping Ballls 二叉树的编号
这个程序常规处理起来数据量很大,I可以高达2^D-1 /* ....... */ 里面的代码块据此避免了开太大的数组 做太多的循环 #include<cstdio> #include< ...
- UVa OJ 679 - Dropping Balls
本题是一个二叉树问题——Perfect Binary Tree. 一个完美二叉树(PBT)的深度为D,从根结点开始,按层次遍历顺序编号为1,2,...,2D-1. 有若干个球,依次由根结点落下.当一个 ...
随机推荐
- QEMU 配置网络
背景 为了 实现 uboot 中连接上 QEMU-host 的网络. 非常奇怪,本人的 系统中 存在/dev/net/tun驱动,但是 lsmod | grep tun 却没有任何结果,所以实际上,这 ...
- mybaits-plus总结
import java.math.BigDecimal; import java.util.Arrays; import java.util.Date; import java.util.List; ...
- Golang的基础数据类型-布尔型
Golang的基础数据类型-布尔型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.bool类型概述 bool类型的取值范围: bool类型的值只有两种,其值不为真即为假,可以用 ...
- UVA - 1572 Self-Assembly(图论模型+拓扑排序)
题意:判断利用给出的正方形是否能拼接出无限延伸的结构. 分析:正方形上的字母看做点,正方形看做有向边. 例如: 若上下两个正方形能拼接,需要B+~C+是个有向边. 对输入的处理是:把A+,A-分别映射 ...
- 微信公众号开发 获取openid时报错40029 invalid code 问题的解决
{"errcode":40029,"errmsg":"invalid code, hints: [ req_id: aELCyY4ce-WOFLAa ...
- 浅谈arduino的bootloader
在arduino的板子上,作为核心的avr单片机往往都会烧录一个bootloader,这个叫做bootloader的东东其实是arduino研发团队针对arduino板子开发的一小段代码,借助于这段代 ...
- 微信小程序添加背景图片的坑
给微信小程序页面加载背景图片解决方案 直接附上原文地址: 给微信小程序页面加载背景图片解决方案 - YUSIR 完美CODING世界 - CSDN博客 https://blog.csdn.net/y ...
- 留学Essay写作中常见的两类要求词盘点
写essay的时候,我们会常常因为各式各样的要求词而头疼:discuss,describing,evaluate,explain,等等,他们之间有何区别?如果你在思考这个问题,那么这篇文章就是为你写的 ...
- Java中调试与测试常用方法
一.断言 1.概述 根据之前的条件来对后续的结果进行预判. 2.在Java中,断言默认是不开启的,需要手动进行开启,只需添加参数-ea(enable assert的意思) 开启步骤: 选中项目路径,鼠 ...
- 5分钟搞懂:基于token的用户认证
https://www.qikegu.com/easy-understanding/880 用户认证 用户认证或者说用户登录是确认某人确实是某人的过程,生活中靠身份证,网络上就要靠账号和密码.用户提供 ...