poj2499
来源:互联网 发布:java url decode函数 编辑:程序博客网 时间:2024/05/21 06:41
简单的方法找规律就可以了。
Binary Tree
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)
Total Submission(s) : 4 Accepted Submission(s) : 3
Problem Description
Background
Binary trees are a common data structure in computer science. In this problem we will look at an infinite binary tree where the nodes contain a pair of integers. The tree is constructed like this:
Problem
Given the contents (a, b) of some node of the binary tree described above, suppose you are walking from the root of the tree to the given node along the shortest possible path. Can you find out how often you have to go to a left child and how often to a right child?
Binary trees are a common data structure in computer science. In this problem we will look at an infinite binary tree where the nodes contain a pair of integers. The tree is constructed like this:
- The root contains the pair (1, 1).
- If a node contains (a, b) then its left child contains (a + b, b) and its right child (a, a + b)
Problem
Given the contents (a, b) of some node of the binary tree described above, suppose you are walking from the root of the tree to the given node along the shortest possible path. Can you find out how often you have to go to a left child and how often to a right child?
Input
The first line contains the number of scenarios.
Every scenario consists of a single line containing two integers i and j (1 <= i, j <= 2*109) that represent
a node (i, j). You can assume that this is a valid node in the binary tree described above.
Every scenario consists of a single line containing two integers i and j (1 <= i, j <= 2*109) that represent
a node (i, j). You can assume that this is a valid node in the binary tree described above.
Output
The output for every scenario begins with a line containing "Scenario #i:", where i is the number of the scenario starting at 1. Then print a single line containing two numbers l and r separated by a single space, where l is how often you have to go left and r is how often you have to go right when traversing the tree from the root to the node given in the input. Print an empty line after every scenario.
Sample Input
342 13 417 73
Sample Output
Scenario #1:41 0Scenario #2:2 1Scenario #3:4 6从题目的意思很明确的以最短的路径走完,所以很简单的,每次走的数字越大,所走的次数就应越少,所走的路径就越小,所以可以从最终的结果出发,向前推,便可以找到最优的次数每次都保证走最大数字,就可以。需要注意的是如果单纯的只做减法运算肯定超时,(数据量是2*109),所以要进行一点点的优化代码如下:#include <iostream>#include <cstdio>using namespace std;int main(){ int n,k=0; int l,r,li,ri,ra,la; scanf("%d",&n); while(n--) { li=ri=0; k++; scanf("%d %d",&l,&r); while(r!=l) { if(r==l&&r==1) break; if(r>l) { ra=(r-1)/l;//优化减法,一次除法操作避免反复的减法, r=r-l*ra; ri+=ra; } else if(l>r) { la=(l-1)/r; l=l-r*la; li+=la; } } printf("Scenario #%d:\n%d %d\n\n",k,li,ri); } return 0;}
0 0
- poj2499
- poj2499
- poj2499
- poj2499 Binary Tree
- poj2499(K短路)
- poj2499 Binary Tree
- poj2499--Binary Tree
- POJ2499:Remmarguts' Date(第K短路 SPFA+A*)
- poj2499 Remmarguts' Date 第K短路(spfa+A*)
- poj2499——Binary Tree(应用二叉树)
- poj2499 由二叉树的根向左向右走几步到目标点
- poj2499 由二叉树的根向左向右走几步到目标点
- 获取本周,上周,上月的数据,sql语句
- hdu-oj 1673 Optimal Parking
- ubuntu下修改文件的权限
- Objective-C中的instancetype和id区别
- 以互联网思维做好客户端软件
- poj2499
- dede列表命名规则
- 整理项目中用到的javascript全局规则
- 获取文件的MD5码
- Scrollbarstyle属性的设置对scrollbar位置的影响
- 关于DES算法的一些入门
- vs2010编译c++程序出现的错误(LINK fatal error LNK1123)
- HDU 1253 胜利大逃亡 三维BFS
- UVa-673-Parentheses Balance