其他分享
首页 > 其他分享> > CF572C题解

CF572C题解

作者:互联网

题面

Description:
定义一个长度为 \(n\) 的数列 \(a_i\) 的“不美好程度”为 $$\max_{1\leq l<r\leq n} {|\sum_{i=l}^r a_i|}$$
求一个实数 \(x\),使得数列 \(b_i=a_i-x\) 的“不美好程度”最小。输出最小值。
\(n\leq2\times10^5\)。


我们先转化一下式子。
因为 \(|a|=\max\{a,-a\}\),所以 \(\max_{1\leq l<r\leq n} \{|\sum_{i=l}^r a_i|\}=\max\{\max_{1\leq l<r\leq n} \{\sum_{i=l}^r a_i\},\max_{1\leq l<r\leq n} \{-\sum_{i=l}^r a_i\}\}\)。
这样我们就把求一个数列的“不美好程度”转化成求两次最大子段和。
因为我不会证明“不美好程度”与 \(x\) 的函数关系,所以拒绝使用三分法。但我们知道 \(x\) 的范围局限在 \([\min\{a_i\},\max\{a_i\}]\) 之间,这个区域很小,于是考虑使用随机化算法模拟退火。注意参数的掌握。

代码

标签:数列,CF572C,题解,leq,模拟退火,美好,max,程度
来源: https://www.cnblogs.com/1358id/p/16343765.html