ZROI2017 做题笔记

Posted jhqqwq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZROI2017 做题笔记相关的知识,希望对你有一定的参考价值。

B2064 斐波那契数列

递归函数的写法应该是:

 int f(int n)
 
     if (n <= 2) return 1;
     return f(n - 1) + f(n - 2);
 

改成非递归的手工栈需要储存函数参数、时间戳和答案,比较恶心但也的确是 C++ 递归函数内部代码的形式。

 const int N = 1e6 + 10;
 int s[N][3];
 
 int f(int n)
 
     int head = 1; s[1][0] = n, s[1][1] = s[1][2] = 0;
     while (head)
     
         if (!s[head][1])
             if (s[head][0] <= 2) s[head--][2] = 1;
             else s[head][1] = 1, ++head, s[head][0] = s[head - 1][0] - 1, s[head][1] = s[head][2] = 0;
         else if (s[head][1] & 1)
         
             s[head][1] = 2, s[head][2] += s[head + 1][2];
             ++head, s[head][0] = s[head - 1][0] - 2, s[head][1] = s[head][2] = 0;
         
         else s[head][2] += s[head + 1][2], --head;
     
     return s[1][2];
 

To be continued...

以上是关于ZROI2017 做题笔记的主要内容,如果未能解决你的问题,请参考以下文章

攻防世界-Cat-(详细操作)做题笔记

[做题笔记] pb大师的杂题选讲

[补档]2017-7-26 大佬讲课笔记

[做题笔记] lxl 的数据结构选讲(下)

java做题笔记

ZROI#960