国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

UVA 679 Dropping Balls (二叉樹的編號)

2019-11-08 03:07:26
字體:
來源:轉載
供稿:網友

https://vjudge.net/PRoblem/UVA-679

A number ofKballs are dropped one by one from the root of a fully binary tree structure FBT. Eachtime the ball being dropped first visits a non-terminal node. It then keeps moving down, either followsthe path of the left subtree, or follows the path of the right subtree, until it stops at one of the leafnodes of FBT. To determine a ball’s moving direction a flag is set up in every non-terminal node withtwo values, eitherfalSEOrtrue. Initially, all of the flags arefalse. When visiting a non-terminal nodeif the flag’s current value at this node isfalse, then the ball will first switch this flag’s value, i.e., fromthefalseto thetrue, and then follow the left subtree of this node to keep moving down. Otherwise,it will also switch this flag’s value, i.e., from thetrueto thefalse, but will follow the right subtree ofthis node to keep moving down. Furthermore, all nodes of FBT are sequentially numbered, starting at1 with nodes on depth 1, and then those on depth 2, and so on. Nodes on any depth are numberedfrom left to right.

For example, Fig. 1 represents a fully binary tree of maximum depth 4 with the node numbers 1,2, 3, ..., 15. Since all of the flags are initially set to befalse, the first ball being dropped will switchflag’s values at node 1, node 2, and node 4 before it finally stops at position 8. The second ball beingdropped will switch flag’s values at node 1, node 3, and node 6, and stop at position 12. Obviously,the third ball being dropped will switch flag’s values at node 1, node 2, and node 5 before it stops atposition 10.

Fig. 1: An example of FBT with the maximum depth 4 and sequential node numbers.

Now consider a number of test cases where two values will be given for each test. The first value isD, the maximum depth of FBT, and the second one is I, theI-th ball being dropped. You may assumethe value ofIwill not exceed the total number of leaf nodes for the given FBT.

Please write a program to determine the stop positionPfor each test case.For each test cases the range of two parametersDandIis as below:

Input

Containsl+ 2lines.

2≤D≤20,and1≤I≤524288.

Line 1lthe number of test casesLine 2 D1I1test case #1, two decimal numbers that are separated by one blank...Line k+1DkIktest case #kLinel+1DlIltest case #lLinel+ 2-1a constant ‘-1’ representing the end of the input file

Output

Containsllines.

Line 1...Linek...Linel

the stop positionPfor the test case #1the stop positionPfor the test case #kthe stop position Pfor the test case #l

Sample Input

5

4 2

3 4

10 1

2 2

8 128

-1

Sample Output

12

7

512

3

255 

思路:盲目模擬會超時,要分析小球的個數和小球移動方向的關系。當小球個數為奇數時,小球向左移動,偶數是向右移動。

import java.util.Arrays;import java.util.Scanner;public class Main {	public static void main(String[] args) {		Scanner scan = new Scanner(System.in);		int t = scan.nextInt();		while(t--!=0){			int d = scan.nextInt();			if(d==-1)				break;			int i = scan.nextInt();			int k = 1;			for(int m = 0;m<d-1;m++){				if(i%2==1){					k = 2*k;					i = (i+1)/2;				}else{					k = 2*k+1;					i = i/2;				}			}			System.out.println(k);		}	}}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通州市| 沁水县| 丰都县| 常德市| 城固县| 夹江县| 桃源县| 阳泉市| 梅州市| 栾城县| 仙居县| 华亭县| 淮南市| 社旗县| 红安县| 涿鹿县| 菏泽市| 遂宁市| 黄浦区| 濮阳县| 雷州市| 德阳市| 营山县| 安义县| 广平县| 白朗县| 土默特左旗| 尉氏县| 固镇县| 眉山市| 中西区| 无为县| 焦作市| 仙居县| 合川市| 阿合奇县| 平泉县| 青河县| 汉川市| 井冈山市| 大城县|