UVA 679 小球下落

开始我用的模拟,但会超时
学到一些小技巧
1<<D,即为2的D次方;
以后开最大值为maxn或maxd这样;
一个树结点是k,左子节点为2k,右子结点为2k+1;

后面书上说,可以模拟小球的奇偶性;
这道题真的是很有趣,当懂了之后;
只模拟最后一个小球,只模拟最后一个小球;
真的很有趣;
如果I为奇数,那么往左走,相应的I变成往左走的第(I+1)/2个点;
如果I为偶数,那么往右走,相应的I变成往右走的第I/2个点;
因为树总共有D层,所以走D-1次,所以循环i < D-1;
记得初始化k的值为一,因为从第一个点开始走

	k = 1;
		for(int i = 0; i < D-1; i++)
		{
			if(I%2){
				k = 2*k;
				I = (I+1)/2;
			}
			else{
				k = 2*k+1;
				I = I/2;
			}
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值