题意:给定一个长度为 n n n的括号序列 S S S,一个长度为 n n n的序列 a i a_i ai。定义一段括号序列的价值:若括号序列 [ l , r ] [l,r] [l,r]为合法序列,其价值为 a r − a l a_r-a_l ar−al;若不合法,价值为 0 0 0.可将 S S S划分为若干非空子段,定义美丽度为每个子段价值之和,求最大美丽度。 n ≤ 3000000 n\le3000000 n≤3000000.
不难想到dp,设 f i f_i fi表示原括号序列的前i位所能得到的最大美丽度。转移方程为 f i = m a x ( f i − 1 , f j + a i − a j + 1 ) f_i = max(f_{i-1}, f_j+a_i-a_{j+1}) fi=max(fi−1,fj+ai−aj+1)</