【题目描述】
斐波那契数列又称兔子数列,可以通过以下方式产生:一开始只有一只兔子,一个月之后这只兔子每个月会繁殖出另一只兔子。之后每只兔子出生后都按照以上规则繁殖。我们把每个月的兔子的数量作为数列中的数就可以得到斐波那契数列。现在草原上有 n 只兔子排成一排,每只兔子有一个繁殖能力 ai。小 F 想把这些兔子分组,要求一个组内的兔子必须是连续的一段。而且因为兔子们不太喜欢兔子数列,所以组内任意两只兔子的繁殖能力的和不能在兔子数列中出现。
现在小 F 想让这些兔子的分组数量尽可能少,但是兔子很多,他算不过来,于是他找到了你,想让你告诉他最少的分组数量是多少。
【输入格式】
第一行一个整数 n,表示兔子的个数。
接下来一行 n 个数,依次表示 ai。
【输出格式】
输出一个数,表示最小的分组数量。
【样例输入】
5
1 5 2 6 7
【样例输出】
4
【备注】
对于 10% 的数据,n ≤ 20。
对于 30% 的数据,n ≤ 300。
对于 60% 的数据,n ≤ 1000。
对于 100 % 的数据,n ≤ 1e5, ai ≤ 1e9。
【题目分析】
好好的一到签到题死于不会set。。。。60滚粗。。。。。
因为你选取的每一段都是连续的,所以完全可以边加边操作。因为两个非法数之间最少划分成两段,所以顺序不会影响。
接下来考虑判断,每读入一个数,判断之前的数是否与之非法即可,因为2e9范围内的fib数只有46个,所以复杂度可以接受,最终复杂度:O(46n)。<