Shell Necklace
Time Limit: 16000/8000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 1110 Accepted Submission(s): 471
Problem Description
Perhaps the sea‘s definition of a shell is the pearl. However, in my view, a shell necklace with n beautiful shells contains the most sincere feeling for my best lover Arrietty, but even that is not enough.
Suppose the shell necklace is a sequence of shells (not a chain end to end). Considering i continuous shells in the shell necklace, I know that there exist different schemes to decorate the i shells together with one declaration of love.
I want to decorate all the shells with some declarations of love and decorate each shell just one time. As a problem, I want to know the total number of schemes.
Input
20 cases and no more than 1 in extreme case), ended by 0.
For each test cases, the first line contains an integer
n, meaning the number of shells in this shell necklace, where
1≤n≤105. Following line is a sequence with
nnon-negative integer
a1,a2,…,an, and
ai≤107 meaning the number of schemes to decorate
i continuous shells together with a declaration of love.
Output
313(Three hundred and thirteen implies the march 13th, a special and purposeful day).
Sample Input
3 1 3 7 4 2 2 2 2 0
Sample Output
Hint
For the first test case in Sample Input, the Figure 1 provides all schemes about it. The total number of schemes is 1 + 3 + 3 + 7 = 14.
Author
HIT
Source
2016 Multi-University Training Contest 1
【分析】
分治FFT
dp[i]=Σdp[j]*a[i-j]
如果朴素转移需要O(n^2)
考虑分治
发现是一个卷积的形式
处理出来[l,mid]里的dp值后做卷积,统计[l,mid]对[mid+1,r]的贡献。
复杂度O(n log^2 n)
还卡空间2333
【代码】