795. Number of Subarrays with Bounded Maximum

数学的方式

是对于所有的字符分成简单的三类
0 小于 L
1 LR 之间
2 大于R
也就是再求 不包含 2 但是包含1 的子数组个数

不包含2的子数组个数好求 对于连续的相邻的n个 非2类数 就有 n*(n-1)//2 + n 个连续子数组
但是包含1 的子数组个数不好求,这里求反 求不包含 包含1 不包含2 的 子数组个数 原理同上 (将1 类这时视为2类)
最后做差即可

dp

A[i] 为以 i 结尾的满足条件的子数组个数
A[i] =A[i-1] 当A[i] 是第1类数
A[i] =prev 当A[i] 是第0类数
A[i] =0 当A[i] 是第2类数 同时更新Prev

prev 的语义是最左邻近的第二类数

原文地址:https://www.cnblogs.com/sfzyk/p/9732292.html