`
lilisalo
  • 浏览: 1151117 次
文章分类
社区版块
存档分类
最新评论

POJ 1207 HDOJ/HDU 1032 3n+1数链问题 绝对不水的解法

 
阅读更多
The 3n + 1 problem
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 39115 Accepted: 12294

Description

Problems in Computer Science are often classified as belonging to a certain class of problems (e.g., NP, Unsolvable, Recursive). In this problem you will be analyzing a property of an algorithm whose classification is not known for all possible inputs.
Consider the following algorithm:
 

		1. 		 input n



		2. 		 print n



		3. 		 if n = 1 then STOP



		4. 		 		 if n is odd then   n <-- 3n+1



		5. 		 		 else   n <-- n/2



		6. 		 GOTO 2




Given the input 22, the following sequence of numbers will be printed 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

It is conjectured that the algorithm above will terminate (when a 1 is printed) for any integral input value. Despite the simplicity of the algorithm, it is unknown whether this conjecture is true. It has been verified, however, for all integers n such that 0 < n < 1,000,000 (and, in fact, for many more numbers than this.)

Given an input n, it is possible to determine the number of numbers printed before the 1 is printed. For a given n this is called the cycle-length of n. In the example above, the cycle length of 22 is 16.

For any two numbers i and j you are to determine the maximum cycle length over all numbers between i and j.


Input

The input will consist of a series of pairs of integers i and j, one pair of integers per line. All integers will be less than 10,000 and greater than 0.

You should process all pairs of integers and for each pair determine the maximum cycle length over all integers between and including i and j.

Output

For each pair of input integers i and j you should output i, j, and the maximum cycle length for integers between and including i and j. These three numbers should be separated by at least one space with all three numbers on one line and with one line of output for each line of input. The integers i and j must appear in the output in the same order in which they appeared in the input and should be followed by the maximum cycle length (on the same line).

Sample Input

1 10
100 200
201 210
900 1000

Sample Output

1 10 20
100 200 125
201 210 89
900 1000 174

Source

这个题,很多人以为是水题。其实大家都没有想想这个题的其他解法
这个题,很多人说事水题的原因是:n太小。所以直接暴力就OK
确实,暴力可以过掉,而且搞不好还是0ms
但是如果n有100w这个时候该怎么暴力?
所以这个时候暴力就是不可取的了
可以观察到,如果要求22的数链长度,其实就是在11的长度上+1,那么要知道11的长度,就在34的长度上面+1,等等等等。。
所以这个题其实可以用记忆优化搜索非常快速的搜索出1到n的所有i的数链长度。
得到长度之后,就可以用线段树求某一个区间的最大值。这一步很显然
看看我的代码吧:

分享到:
评论
1 楼 560130911 2012-07-28  
100w,你的代码也不行吧!数组不能定义太大

相关推荐

    POJ1207-The 3n + 1 problem

    《POJ1207-The 3n + 1 problem》是北京大学在线编程平台POJ上的一道经典算法题目,其主要涉及的知识点是数论和动态规划。本题目的核心是解决著名的“Collatz Conjecture”问题,也被称为“3n+1猜想”。 3n+1猜想是...

    POJ3733-Changing Digits【DFS+强剪枝】

    【标题】"POJ3733-Changing Digits【DFS+强剪枝】"是一个来自北京大学在线评测系统POJ的编程题目,该题目主要涉及深度优先搜索(DFS)算法和强剪枝策略。在算法竞赛和编程挑战中,这类问题通常要求参赛者通过编写...

    POJ3009-Curling 2.0【DFS+Vector+回溯+剪枝】

    《POJ3009-Curling 2.0:深度优先搜索、向量、回溯与剪枝的综合应用》 北京大学在线编程平台上的POJ3009题目名为"Curling 2.0",它是一道涉及到算法与数据结构的复杂问题,主要考察了参赛者对深度优先搜索(DFS)、...

    POJ2186-Popular Cows【Tarjan+极大强连通分量+缩点】

    POJ2186-Popular Cows 【Tarjan+极大强连通分量+缩点】 解题报告+AC代码 http://hi.csdn.net/!s/BGDH68 附:我所有的POJ解题报告链接 . http://blog.csdn.net/lyy289065406/article/details/6642573

    POJ3026-Borg Maze【BFS+Prim】

    《POJ3026-Borg Maze:BFS与Prim算法的应用解析》 在计算机科学领域,图论是解决问题的重要工具之一,而BFS(广度优先搜索)和Prim算法则是其中的两种经典算法。本篇文章将围绕北大POJ3026题目“Borg Maze”来探讨...

    POJ3373-Changing Digits【DFS+强剪枝】

    标题“POJ3373-Changing Digits【DFS+强剪枝】”涉及的是一个编程竞赛中的问题,这个问题在北大POJ(北京大学在线评测系统)平台上被提出。"Changing Digits"是一个算法挑战,而解决方案是通过深度优先搜索(DFS)...

    北大POJ初级-所有题目AC代码+解题报告

    【标题】"北大POJ初级-所有题目AC代码+解题报告" 涉及的知识点主要集中在编程、算法和在线判题系统方面。北京大学(Peking University, 简称PKU)的POJ(Peking University Online Judge)是一个为计算机科学爱好者...

    POJ中缀-后缀-四则运算

    人们熟悉的四则运算表达式称为中缀表达式,例如(23+34*45/(5+6+7))。在程序设计语言中,可以利用堆栈的方法把中缀表达式转换成保值的后缀表达式(又称逆波兰表示法),并最终变为计算机可以直接执行的指令,得到...

    POJ3414-Pots

    1. **问题描述**:POJ3414题目可能描述了一个关于“Pots”的情境,比如可能涉及到水资源分配、种植管理等实际或抽象的问题,要求参赛者设计程序来处理这些问题。 2. **输入输出格式**:解题报告会详细说明程序需要...

    POJ动态规划题目全面总结

    PKU Online Judge上面很全面的动态规划试题总结。动态规划是ACM考点中最重要的一大类算法之一,对于工作人员来说,动态规划也是实际开发中...这是POJ上面很多DP题目的总结与深刻分析。利于算法学习,学长给的,在此分享

    hdu oj poj 题目代码与详解

    【题目代码与详解】是针对在线编程竞赛平台HDU(杭州电子科技大学在线评测系统)和POJ(普林斯顿大学在线判题系统)中的经典题目所编写的解决方案和解析的集合。这些平台是程序员和计算机科学学生提升算法技能、熟悉...

    POJ、HDU、ZOJ、SOJ水题过滤器

    标题中的“POJ、HDU、ZOJ、SOJ水题过滤器”指的是一个工具,它主要用于帮助在ACM(国际大学生程序设计竞赛)训练中筛选出这些在线判题系统中的简单题目,即所谓的“水题”。这些在线判题平台是编程爱好者和参赛者们...

    POJ1013 C解法

    【标题】"POJ1013 C解法"是一个关于解决特定编程竞赛问题的教程,主要关注如何用C语言来实现解决方案。POJ(Problem Solving in Java)是著名的在线编程竞赛平台,它提供了各种算法题目供参赛者挑战,而POJ1013是一...

    acm新手刷题攻略之poj

    ### ACM新手刷题攻略之POJ ... - 推荐题目:[poj1860](https://vjudge.net/problem/POJ-1860)、[poj3259](https://vjudge.net/problem/POJ-3259)、[poj1062](https://vjudge.net/problem/POJ-1062)、[poj2253]...

    PKU 、POJ ACM/ICPC300多题的代码

    标题“PKU 、POJ ACM/ICPC300多题的代码”指的是北京大学(PKU)和编程在线评测平台POJ上收集的300多道ACM/ICPC(国际大学生程序设计竞赛)比赛题目解题代码。这个压缩包包含了解决这些竞赛问题的算法和程序实现,是...

    POJ 1012 约瑟夫问题的数学解法及分析

    POJ 1012 约瑟夫问题的数学解法及分析POJ 1012 约瑟夫问题的数学解法及分析POJ 1012 约瑟夫问题的数学解法及分析

    POJ1426-Find The Multiple【BFS+同余模】

    【解析】在POJ1426问题中,可能的任务是找到某个数n的所有倍数,或者是在一定范围内找到特定条件下的倍数。使用BFS,我们可以从n开始,逐层扩展,寻找所有的倍数。每一步都乘以一个因子,例如2,3,4等,直到达到...

    poj3045源码

    【标题】"poj3045源码"所涉及的知识点主要集中在程序设计与算法领域,特别是针对编程竞赛中的问题解决。POJ(Problem Online Judge)是一个在线编程评测系统,它提供了各种算法题目供参赛者练习和提交代码。在这个...

    万能头文件stdc++.h

    注意,目前POJ还不支持&lt;bits/stdc++.h&gt;(G++、C++都不支持)。HDU部分支持(G++支持,C++不支持)。 其他国外的oj,还有台湾的oj都支持,CF,Topcoder也都支持。 当然,其实这是一个偷懒的写法,但是会降低编译...

    POJ1002-487-3279【Hash+Qsort】

    1. "POJ1002-487-3279【Hash+Qsort】.cpp":这可能是主程序,包含了使用哈希表和快速排序解决整个问题的代码。 2. "POJ1002-487-3279【Qsort】.cpp":这个可能是单独实现快速排序部分的代码,可能用于比较不同的排序...

Global site tag (gtag.js) - Google Analytics