原式化简为 $\displaystyle (\sum _ {i = 1} ^ n x _ i + 1) ^ 2$ 。做前缀和后,区间 $(k, i]$ 的值为 $(s _ i - s _ k + 1) ^ 2$ 。这个式子可以斜率优化。复杂度为 $O(nm)$ ,可以得到 $50pts$ 。
查看代码
1 |
|
进一步,可以发现,随着段数的增多,答案越来越小,并且小得越来越慢,于是可以考虑 wqs二分 。每多一段都需要多一个权值。此时不考虑段数,依然可以斜率优化。复杂度为 $O(n \log x)$ 。
细节:此题也会出现斜率不严格单调增加的情况。斜率优化中,一条直线上的若干点都可以成为决策,如果选择了第一个,则选择了最先入队的点, $cnt$ 最小;如果选择了最后一个,则选择了最后入队的点, $cnt$ 最大。对应到 wqs 中,同样的斜率,选择了 $cnt$ 最小的点,那么 $cnt \le m$ 时就需要更新答案;反之,则 $cnt \ge m$ 更新答案。具体地,如果斜率优化中的斜率比较取了等,则为后者。
查看代码
1 |
|