[Luogu]P2344 [USACO11FEB]Generic Cow Protests G

(Link)

Description

(Farmer John)(N) 头奶牛 (left(1 leq N leq 10^{5} ight)) 排成一列,正在进行一场抗议活动。第 (i) 头奶牛的理智度为 (a_{i}left(-10^{4} leq a_{i} leq 10^{4} ight))。他打算将所有的奶牛隔离成若干个小组,每个小组内的奶牛的理智度总和都要不小于(0)。一个小组内的奶牛位置必须是连续的。求满足条件的分组方案有多少种。(pmod{10^9+9})

Solution

首先很容易可以写出(dp)方程:(dp[i]=sumlimits_{j=1}^{i-1}dp[j](s[i]ge{s[j]}),dp[0]=1)

但是这样做是(O(n^2))的。考虑如何优化。

注意到要满足两个条件((jle{i-1})(s_jle{s_i})),其实就是一个二维数点。而(i,j)是天然有序的,我们可以在求出前缀和(s_i)后,先离散化一下,作为树状数组下标,再把(dp_i)依次加到树状数组里,算出答案就可以了。

原文地址:https://www.cnblogs.com/andysj/p/13856908.html