题目链接:

http://acm.zzuli.edu.cn/problem.php?id=2597

  这题n给的数字很大,显然需要我们打表,而且直接打表的话也很浪费时间,所以我们可以用记忆化搜索的方式,储存之前计算的值在之后计算用的时候用上以减少计算量

  1. #include<set>
  2. #include<map>
  3. #include<stack>
  4. #include<queue>
  5. #include<cmath>
  6. #include<cstdio>
  7. #include<cctype>
  8. #include<string>
  9. #include<vector>
  10. #include<climits>
  11. #include<cstring>
  12. #include<cstdlib>
  13. #include<iostream>
  14. #include<algorithm>
  15. #define max(a, b) (a > b ? a : b)
  16. #define min(a, b) (a < b ? a : b)
  17. #define mst(a) memset(a, 0, sizeof(a))
  18. #define _test printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n")
  19. using namespace std;
  20. typedef long long ll;
  21. typedef pair<int, int> P;
  22. const double eps = 1e-;
  23. const int INF = 0x3f3f3f3f;
  24. const ll ll_INF = 0x3f3f3f3f3f3f3f;
  25. const int maxn = 4e6+;
  26. ll res[maxn] = {,};
  27. //递归
  28. ll solve(ll x) {
  29. ll cnt;
  30. if (x < maxn && res[x]) //利用中间结果减少计算量
  31. return res[x];
  32. cnt = solve(x& ? x* + : x >> ) + ;
  33. return cnt;
  34. }
  35. //循环版
  36. //ll solve(ll x) {
  37. // ll cnt = 1;
  38. // while(x != 1) {
  39. // x&1 ? x = x*3 + 1 : x >>= 1;
  40. // ++cnt;
  41. // if (x <= maxn && res[x])
  42. // return cnt+res[x]-1;
  43. // }
  44. // return cnt;
  45. //}
  46. int main(void) {
  47. for(int i = ; i<maxn; ++i)
  48. res[i] = solve(i);
  49. P _max = {res[], };
  50. res[] = ;
  51. for(int i = ; i<maxn; ++i) { //求解1~n内步长最大的数
  52. if (res[i] < _max.first)
  53. res[i] = _max.second;
  54. else if (res[i] > _max.first) {
  55. _max.first = res[i];
  56. _max.second = i;
  57. res[i] = i;
  58. }
  59. //printf("%lld ", res[i]);
  60. }
  61. int num;
  62. while(~scanf("%d", &num))
  63. printf("%lld\n", res[num]);
  64. return ;
  65. }

zzulioj - 2597: 角谷猜想2的更多相关文章

  1. Openjudge计算概论-角谷猜想

    /*===================================== 角谷猜想 总时间限制: 1000ms 内存限制: 65536kB 描述 所谓角谷猜想,是指对于任意一个正整数,如果是奇数 ...

  2. POJ C程序设计进阶 编程题#2:角谷猜想

    编程题#2:角谷猜想 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 所谓角谷 ...

  3. HDOJ 1279 验证角谷猜想

    Problem Description 数论中有许多猜想尚未解决,其中有一个被称为"角谷猜想"的问题,该问题在五.六十年代的美国多个著名高校中曾风行一时,这个问题是这样描述的:任何 ...

  4. hdu 验证角谷猜想 1279

    Problem Description 数论中有许多猜想尚未解决,其中有一个被称为"角谷猜想"的问题,该问题在五.六十年代的美国多个著名高校中曾风行一时,这个问题是这样描述的:任何 ...

  5. 验证角谷猜想(hd1279)

    验证角谷猜想 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  6. hdu 1279 验证角谷猜想(简单的模拟)

    Problem Description 数论中有许多猜想尚未解决,其中有一个被称为“角谷猜想”的问题,该问题在五.六十年代的美国多个著名高校中曾风行一时,这个问题是这样描述的:任何一个大于一的自然数, ...

  7. Openjudge-计算概论(A)-角谷猜想

    描述: 所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1.如,假定初始整数为5,计算过程分别为16.8.4.2.1 ...

  8. 杭电 HDU 1279 验证角谷猜想

    验证角谷猜想 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  9. 题解报告:hdu 1279 验证角谷猜想

    Problem Description 数论中有许多猜想尚未解决,其中有一个被称为“角谷猜想”的问题,该问题在五.六十年代的美国多个著名高校中曾风行一时,这个问题是这样描述的:任何一个大于一的自然数, ...

随机推荐

  1. 【ztree】回显选中节点

    // treeId是元素id,array是数据数组 var ztree = $.fn.zTree.init($("#treeId"), setting, array); // 获取 ...

  2. linux vsftp查看ftp账号信息的方法

    linux vsftp查看ftp账号信息的方法 查看注册的FTP账号 在/etc/vsftpd/chroot_list 密码看不到 只能重置密码 passwd username

  3. scala中val和var的区别

    1:内容是否可变:val修饰的是不可变的,var修饰是可变的 2:val修饰的变量在编译后类似于java中的中的变量被final修饰 3:lazy修饰符可以修饰变量,但是这个变量必须是val修饰的 p ...

  4. Jenkins整合SonarQube

    一.概述 安装SonarQube,参考链接: https://www.cnblogs.com/xiao987334176/p/12011623.html 安装SonarQube Scanner,参考链 ...

  5. GitBook基本使用

    1.安装 Node.js:https://nodejs.org/en/ 2.安装 GitBook: npm install gitbook-cli -g gitbook -V  #查看gitbook是 ...

  6. 关于多个版本的jquery冲突的问题

    关于多个版本的jquery冲突的问题 先加载新的版本jquery 然后使用no confi代码,直接上代码看效果 <script src="https://libs.baidu.com ...

  7. Linq分批次,每组1000条

    /// <summary> /// 分组插入每次插入1000 /// </summary> /// <param name="data">< ...

  8. opc 相关组件

    http://external.informer.com/opcsystems.com/download_opc_systems_net.htm

  9. Centos7 日志查看工具

    1  概述     日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息.Systemd统一管理所有Unit的启动日志.带来的好处就是,可以 ...

  10. Java I/O系统学习系列三:I/O流的典型使用方式

    尽管可以通过不同的方式组合IO流类,但我们可能也就只用到其中的几种组合.下面的例子可以作为典型的IO用法的基本参考.在这些示例中,异常处理都被简化为将异常传递给控制台,但是这只有在小型示例和工具中才适 ...