题解 签到题 求区间和为 \(k\) 的倍数的区间,我们可以转化为求左右两个端点,其前缀和相等 对于区间最大值,我们可以把其转化为一个值,它能向左,向右扩展的最远边界,一个单调栈即可 我们设一个值 \(i\),它能扩展的左右边界分别为 \(l_i,r_i\) 那么我们将 \(l_i-r_i\) 分为两部分,\(l_i-i\),\(i-r_i\) 枚举较小的那一段(可以证明总复杂度为 \(\mathcal O(nlogn)\) ),在另一段寻找前缀和等于此前缀和加 \(num_i\) 的个数,用一