传送门
签到题。
显然是可以贪心分组的,也就是尽量跟当前的分成一组。
这时我们需要判断
a
[
l
]
+
a
[
r
]
,
a
[
l
+
1
]
+
a
[
r
]
.
.
.
a
[
r
−
1
]
+
a
[
r
]
a[l]+a[r],a[l+1]+a[r]...a[r-1]+a[r]
a[l]+a[r],a[l+1]+a[r]...a[r−1]+a[r]是否在
f
i
b
fib
fib数列中出现过 。
由于
2
e
9
2e9
2e9范围内兔子数列只有40+个数,因此我们反向思考,枚举
f
i
b
fib
fib数列,判断当前组内是否存在
f
i
b
[
i
]
−
a
[
r
]
fib[i]-a[r]
fib[i]−a[r]就行了。
这个可以用
h
a
s
h
hash
hash来
O
(
1
)
O(1)
O(1)完成,笔者为了偷懒选择了
m
a
p
map
map。
代码