UVa679 小球下落(树)

2023-12-19 05:32
文章标签 小球 下落 uva679

本文主要是介绍UVa679 小球下落(树),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=620



给下落的深度和小球个数,小球依次下落,结点有个开关,每到一个结点,开关关向左,开向右


一开始想到了简单模拟,结果超时…

#include <cstdio>
#include <iostream>
#include <cstring>
#define maxn 20 
using namespace std;int s[1<<maxn];int main(){int n,D,I,now=1;scanf("%d",&n);while(n--){scanf("%d%d",&D,&I);int last=(1<<D)-1;//最后结点,临界 //	cout<<"last="<<last<<endl;memset(s,0,sizeof(s));while(I--){now=1;while(1){	if(s[now]==0){int temp= 2*now;s[now]=1;now=temp;}else{int temp= 2*now+1;s[now]=0;now=temp;	}if(now>last) break;			}} printf("%d\n",now/2);}return 0;
}



后来开了刘汝佳老师算法入门,发现缺失需要多读题,注意细节,多思考。

I小球个数的奇偶性很有关系。奇数的话也是往左走的(I+1)/2个小球,偶数是往右走的I/2个小球。


#include <cstdio>
#include <iostream>
#include <cstring>
#define maxn 20 
using namespace std;int s[1<<maxn];int main(){int n,D,I,now=1;scanf("%d",&n);while(n--){scanf("%d%d",&D,&I);int k=1;for(int i =0;i<D-1;i++){if(I%2!=0){k=2*k;I=(I+1)/2;}else{k=2*k+1;I=I/2;}}printf("%d\n",k);}return 0;
}








这篇关于UVa679 小球下落(树)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/511034

相关文章

12个小球 梅氏砝码问题

1. 12个小球,其中有一个是坏球。有一架天平。需要你用最少的称次数来确定哪个小球是坏的并且它到底是轻还是重。 来源:http://blog.csdn.net/pongba/article/details/2544933 这个问题是一道流传已久的智力题。网络上也有很多讲解,还有泛化到N个球的情况下的严格证明。也有零星的一些地方提到从信息论的角度来看待最优解法。本来我一直认

Android 自定义View控件,实现跟随手指触摸移动的小球

Android UI组件是通过继承View类,然后绘制内容,比如ImageView,TextView等组件都是继承View类。 当Android系统提供的组件功能不能满足需求时,可以通过继承View类重写一个或多个方法,派生自定义的组件,View类常用重写方法: 1.构造器:View子类最基本的重写方法 protected voidonDraw(Canvas canvas) public

Android 自定义控件 loding小球

以下为参照博客    http://blog.csdn.net/guimianhao9833/article/details/74858472  首先看下效果图: 步骤: 1.继承view,并需要三个构造函数。 public MyView(Context context) {//注意不要默认实现,记得修改。 this(context, n

面试or笔试6——小球下落距离

小东和三个朋友一起在楼上抛小球,他们站在楼房的不同层,假设小东站的楼层距离地面N米,球从他手里自由落下,每次落地后反跳回上次下落高度的一半,并以此类推知道全部落到地面不跳,求4个小球一共经过了多少米?(数字都为整数) 给定四个整数A,B,C,D,请返回所求结果。 测试样例: 100,90,80,70 返回:1020 根据极限的思想可直接求得单个小球的下落距离之和为3*N c

移动的小球

VB中有个例子为“移动的小球”,下面有两种编码。一种可以运行成功,另一种不能运行成功。 这个代码不能运行成功。 这个代码可以运行成功。 按照逻辑来来说,这两种代码,均可运行成功。但是第一种并不是想象的那样。原因不明,哪位高手能解读一下?

NYISTOJ 63 小猴子下落 二叉树

小猴子下落 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 有一颗二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从左到右从上到下的编号为1,2,3,·····,2的D次方减1。在结点1处放一个小猴子,它会往下跑。每个内结点上都有一个开关,初始全部关闭,当每次有小猴子跑到一个开关上时,它的状态都会改变,当到达一个内结点时,如果

Algorithm学习笔记 --- 小球下落问题(二叉树解法)

有一颗二叉树,最大深度为D,且所有的叶子深度都相同。所有的结点从上到下从左到右编号为 1,2,3,4,....,2^D-1.在结点1处放一个小球,它会往下落。每个结点上都有一个开关,初始全部关闭,当每次有小球落到一个开关上时,它的状态都会改变。当小球到达一个内结点时,如果该结点上的开关关闭,则往左走,否则往右走,知道走到叶子结点。 一些小球从结点1处开始下落,最后一个小球会落到哪里呢?输入叶子深

Algorithm学习笔记 --- 小球移动问题

此题用链表更加的方便一些。 你有一些小球,从左到右依次编号为1,2,3,…,n, 你可以执行两种指令。其中A X Y表示把小球X移动到小球Y左边,B X Y表示把小球X移动到小球Y右边。指令保证合法,即X不等于Y。 输入    小球个数n。指令条数m和m条指令,注意,1≤n≤500000,0≤m≤100000。 输出    从左到右输出最后的小球序列。

Android仿QQ邮箱下拉刷新动画(三个小球围绕中心转动)

仿QQ邮箱下拉刷新动画(三个小球围绕中心转动) 该动画的实现主要借鉴了海龙的博客- 两个小球不停的绕中心旋转的进度条 ,在此感谢下。 1 首先上图(折腾了好久才把gif给搞了上去) 2 分析 2.1 当我们看到一个动画,首先需要对动画的效果进行分析,而不是盲目的进行开发 2.2 动画的分解(先需要关注一个小球的效果,避免其他干扰) 2.2.1 平移动画:把中心点的横坐标当作坐

模仿搜狗浏览器加载小球

用过android 搜狗浏览器客户端的用户就知道,每次加载页面就会有个下落的加载小球,为了实现它,我上网查资料,在泡在网上的日子上面找到了相关资料,但是没有具体详细的教程,所以我就分享一下我的思路。 先上一张效果图(由于博主一直没有找到怎么在博客中播放gif,所以就来一张静态的吧,要想看具体效果,清下载源码编译): 具体思路: 1、继承View自写控件,并获取控件长宽。 2、根据已经获