NYOJ-63 小猴子下落【满二叉树】

news/2024/7/10 4:41:07 标签: 测试, 优化

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=63

解题思路:

很久前做过这道题,是用的模拟法做的。因为这道题数目的测试数据比较少,所以暴力就过了。

但是如果测试数据很大时,超时是明显的。因为D<=20,所以需要遍历的为2的19次方乘以19,如果有1000组测试数据,就肯定挂了。

今天看到了一种优化,非常巧妙。

因为每个小猴子都是从根节点向下,它必然有两种选择:左、右。而且有规律,它前面的两个猴子一定是左,右。所以在每个节点进入根节点时,我们只需要判断这个点的奇偶性就知道它的方向了。然后它进入根节点的下一层,依然有两种选择,同样的判断,但是数据规模减少一半(每进入1层,舍弃另一个子树,必然减少一半,因为左右的个数相同或者相差1),这样,我们只需要判断这个猴子是第几个进入该层,然后判断奇偶即可。


代码如下:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstdlib>
using namespace std;

int main()
{
	int d, I;
	while(scanf("%d %d", &d, &I) && (d + I))
	{
		int k = 1;
		for(int i = 0; i < d - 1; ++i) //倒数第二层
			if(I % 2) //左子树
				k <<= 1, I = (I + 1) >> 1; //第几个进入左子树
			else //右子树
				k = (k << 1) + 1, I >>= 1; //第几个进入右子树
		printf("%d\n", k);
	}
	return 0;
}



http://www.niftyadmin.cn/n/1516473.html

相关文章

zTree+jFreeChart+docx4j的中文API

zTree中文APIjFreeChart中文APIdocx4j通用方法实现PyQt5教程 https://www.cnblogs.com/tkinter/p/5632188.html

C/C++ char和int的区别

字符字面值一般是用一对单引号来表示。char类型一般就是用字符字面值来初始化、赋值。由于char类型的是单字节长度&#xff0c;当给char类型的变量用字符字面值赋值时&#xff0c;当单引号里面的内容超过一个字节时&#xff0c;系统会自动截取一个字节的内容给char变量&#xf…

WIN CE下通过注册表键值控制RIL模块的扩展功能

转自&#xff1a;http://hi.baidu.com/roooy/blog/item/5367a8bff235b00219d81f98.html 今天下午通过分析RIL的MDD层我发现&#xff0c;只要在在WIN CE的注册表中以下以下路径添加对应的键值可以实现RIL模块相关的一些扩展功能&#xff1a; HKEY_LOCAL_MACHINE/Drivers/BuiltIn…

双流棠湖中学怎么样_成都13区排名NO.1的最牛中学盘点!有你的学校吗?

成都中心城区&#xff0c;包含“52”区域和新6区&#xff0c;各区都有着许多优质的中学&#xff0c;今天小编就带大家细数成都中心城区各区中学里的TOP1&#xff0c;你的学校也在其中吗&#xff1f;注&#xff1a;479三校七区为市直属&#xff0c;还有民办高中&#xff0c;均不…

比赛小结

昨天下午1点&#xff0c;我&#xff0c;zjf&#xff0c;zgb合作。 上来zjf看前几道&#xff0c;我看中间&#xff0c;zgb看后几道。 发现A是水题&#xff0c;让zjf敲&#xff0c;大概5分钟搞定。提交&#xff0c;CE。。。真无语。。比赛竟然能犯这种错误。。当时感觉太大意了。…

字符串拼接执行速度和内存消耗比较

public static void main(String[] args) {long start 0L;long end 0L;System.out.println("字符串拼接执行效率比较&#xff1a;");String s1 "";start System.currentTimeMillis();for (int i 0; i < 100000; i) {//十万次s1 s1 "a"…

省赛小结

题目不难&#xff0c;拼的是代码的熟练程度。 A题&#xff0c;水题&#xff0c;zjf上去敲&#xff0c;1Y 张国宾看的B&#xff0c;然后推了一个公式&#xff0c;zjf上去敲&#xff0c;敲好后测试发现是大数。然后我用JAVA敲了&#xff0c;提交WA。zgb说不会错&#xff0c;可能…

python读取大数据量csv_python 大数据 读取csv

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…