对长度为 kkk 的前缀,设原始最大值为 MkM_kMk。
第一次操作后 A1+MkA_1+M_kA1+Mk 严格成为新最大值,此后每处理一个位置,刚更新的元素都会成为新最大值,所以最终答案为 kMk+kA1+(k−1)A2+⋯+AkkM_k+kA_1+(k-1)A_2+\cdots+A_kkMk+kA1+(k−1)A2+⋯+Ak。令 Sk=∑i=1kAiS_k=\sum_{i=1}^k A_iSk=∑i=1kAi,加权部分也等于 S1+S2+⋯+SkS_1+S_2+\cdots+S_kS1+S2+⋯+Sk。从左到右同时维护前缀和 SSS、所有前缀和的累加值 QQQ 和前缀最大值 MMM,第 kkk 个答案即 Q+kMQ+kMQ+kM。
每个元素只处理一次,时间复杂度为 O(N)O(N)O(N),空间复杂度为 O(1)O(1)O(1)。
注册一个 Hydro 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 Hydro 通用账户