题意:
一次操作可以将序列中一个位置的值 − − -- −−
求 对于 1 ≤ i ≤ K 1\leq i \leq K 1≤i≤K, i i i次操作能造成的最小的最大子段和, 的和。
序列长度 n ≤ 1 e 5 n\leq 1e5 n≤1e5, K ≤ 1 e 13 K \leq 1e13 K≤1e13。
问题转化:
假设最大子段和为 x x x,
那么对于 i < j i<j i<j连边 ( i → j ) (i\rightarrow j) (i→j)权值为 x x x。
对于 ( i → j ) (i\rightarrow j) (i→j)连边权值为 a i a_i ai
那么 1 1 1到 n + 1 n+1 n+1的最短路,由差分约束系统可以知道。
就是满足方程组:
d i + 1 ≤ d i + a i d_{i+1} \leq d_i + a_i di+1≤di+ai
d j ≤ d i + x ( i < j ) d_j \leq d_i + x(i<j) dj≤di+x(i<j)
的 d n + 1 d_{n+1} dn+1的最大值 f ( x ) f(x) f(x)。
那么 ∑ a i − f ( x ) \sum a_i - f(x) ∑ai−f(x)次操作能造成的最小的最大子段和就是 x x x。
并且最大子段和为 x x x时的最少操作次数是 ∑ a i − f ( x ) \sum a_i - f(x) ∑ai−f(x)。
最小的最大子段和 ≥ x \geq x ≥x的最小序列总和是 g ( x ) = f ( x + 1 ) − 1 g(x) = f(x+1)-1 g(x)=f(x+1)−1
因为后文会提到的原因,我们暂且不考虑 x < 0 x \lt 0 x<0的情况。
那么 x > 0 x>0 x>0的答案就是 ∑ x = 1 原 序 列 最 大 子 段 和 ∑ i = 1 K [ ∑ a − i ≥ g ( x ) ] \sum_{x=1}^{原序列最大子段和}\sum_{i=1}^K[\sum a - i\geq g(x)] ∑x=1原序列最大子段和∑i=1K[∑a−i≥g(x)]
(这个,如果 i i i次操作能达到的最小的最大子段和为 t t t,那么 [ ∑ a − i ≥ g ( x ) ] [\sum a - i\geq g(x)] [∑a−i≥g(x)]会在 x ∈ [ 1 , t ] x\in [1,t] x∈[1,t]的时候 = 1 =1 =1,刚好计算 t t t遍也就是我们需要他造成的贡献。)
那么如果我们能够得到一个好看的 g ( x ) g(x) g(x