A

显然斐波那契数列。

B

函数的值不超过 log\log,枚举函数的层数。 先统计多少模 cc 同余,模 c2c^2 同余,...,层数是 log\log 级别。 用哈希表存然后统计答案即可。

C

因为是要乘积最大,且因为取模不能直接维护,再观察一下题目的 22 的幂性质,不难发现先取 2\log_2

这样问题变为了切割一个矩形,内部不能包含 00(因为乘 00 就变 00 了),且矩形所有数的和最大。

容易发现最大矩形一定是极大矩形,二维前缀和+悬线法dp/单调栈维护即可。

D

发现函数嵌套后关于 xx 还是一个函数,而且是一次函数。这个自己推一下易证。

于是就可以线段树维护单点修改和区间查询了。

现在问题在于区间加 bb,这个不好 pushdown

考虑区间加后对合并后函数的变化。

kk 值显然不变,bb 值可以考虑每个函数被加 xx 的贡献,来尝试维护 bb 的变化量。

blb_l 导致结果的变化量为 x×kl+1×kl+2...x \times k_{l+1} \times k_{l+2} ...

bl+1b_{l+1} 导致结果的变化量为 x×kl+2×kl+3...x \times k_{l+2} \times k_{l+3} ...

可以写出最终的式子:

x×i=lr1j=i+1rkj+xx \times \sum\limits_{i=l}^{r-1} \prod\limits_{j=i+1}^r k_j+x

(注意 +x+x 是前面式子后单独的,不是 kj+xk_j+x)

xx 修改时给定,现在只要 pushup 时能维护 i=lr1j=i+1rkj+1\sum\limits_{i=l}^{r-1} \prod\limits_{j=i+1}^r k_j+1 就做完了。

右儿子部分,直接加上就完事,左儿子部分还要多乘一个 i=mid+1rki\prod\limits_{i=mid+1}^r k_i,这个也可以 pushup 时维护,直接左儿子乘右儿子。

E

alt

F

考虑莫队,假定我们已经处理出区间 [l,r][l,r] 的答案,考虑去扩展到 [l,r+1][l,r+1] 的答案。

定义

S0[k]=1ik,imod2=0a[i]S_0[k]=\sum_{1\le i\le k,i\mod 2=0}a[i]
S1[k]=1ik,imod2=1a[i]S_1[k]=\sum_{1\le i\le k,i\mod 2=1} a[i]

我们转移的代价为:

lir+1max(S0[r+1]S0[i1],S1[r+1]S1[i1])\sum_{l\le i\le r+1}\max(S_0[r+1] - S_0[i-1], S_1[r+1] - S_1[i-1])

S1[r+1]S1[i1]S_1[r+1] - S_1[i-1] 提出 max\max

lir+1max((S0[r+1]S0[i1])(S1[r+1]S1[i1]),0)+S1[r+1]S1[i1]\sum_{l\le i\le r+1}\max((S_0[r+1] - S_0[i-1])-(S_1[r+1] - S_1[i-1]), 0)+S_1[r+1] - S_1[i-1]

而对于

lir+1S1[r+1]S1[i1]\sum_{l\le i\le r+1}S_1[r+1] - S_1[i-1]

的处理是平凡的。

S[i]=S0[i]S1[i]S[i]=S_0[i]-S_1[i]

那么前面的部分即

l1irmax(S[r+1]S[i],0)\sum_{l-1\le i\le r}\max(S[r+1]-S[i], 0)

我们发现这样对这一部分的处理同样是平凡的。

具体地:

Pre[i]=j=1i[S[r+1]>S[i]],Ps[i]=j=1i[S[r+1]>S[i]]a[j]Pre[i]=\sum_{j=1}^i[S[r+1]>S[i]],Ps[i]=\sum_{j=1}^i[S[r+1]>S[i]]a[j]

那么

l1irmax(S[r+1]S[i],0)=(Pre[r]Pre[l2])×S[r+1]+(Ps[r]Ps[l2])\sum_{l-1\le i\le r}\max(S[r+1]-S[i], 0)=(Pre[r]-Pre[l-2])\times S[r+1]+(Ps[r]-Ps[l-2])

对于 Pre,PsPre,Ps 处理可以直接莫队二离做到 O(n1.5)O(n^{1.5})