题意
对于一个正整数序列 的一个严格上升子序列 权值为存在 且 的 的数量。求所有严格上升子序列权值和。()
Solution
以下上升子序列
均表达为子序列
。
首先套路的转换为统计对于一个位置 ,有多少个包含它的能造成贡献的子序列。
找到最大的 满足 ,则能造成贡献的子序列满足 。
正向统计不好统计考虑正难则反,统计包含 的满足 的子序列。
首先包含 的上升子序列个数为 以 j 为终点的子序列数
以 j 为起点的子序列数
。
由于 是最大的 的位置,若存在更大的 也满足 ,则 不是最大位置。也就是说,不存在 的子序列,只可能存在 的子序列。
综上,不合法的子序列个数为包含 且以 为终点的子序列个数,倒序转移时只选择 且 的位置转移,再加上 位置的转移,注意这里的 是对于 的最大位置。
总结一下,我们要统计后缀最大位置,以及以某个点为起点/终点,以及限定转移点值域的以某个点为起点的子序列个数,这些都可以用树状数组维护。复杂度 。