icpc2018焦作H.Can You Solve the Harder Problem?
题意
求一个串的本质不同子串的权值和,一个串的权值为这个串所有元素的最大值
思路
如果不考虑本质不同子串,可以设第iii个元素为左端点的所有子串权值和为fif_ifi,那么假设iii左边第一个比iii位置大的元素位置为jjj,那么可得如下等式
fi=fj+num[i]∗(j−i)f_i=f_j+num[i]*(j-i)fi=fj+num[i]∗(j−i)
单调栈处理每个数左边第一个比他大的地方,再反向枚举iii即可
现在考虑本质不同子串,很容易想到后缀数组,height[Rank[i]]height[
原创
2021-10-08 09:28:21 ·
145 阅读 ·
0 评论