特别行动队「APIO 2010」
2021-02-08 08:16
标签:return out ret a* 优化 oid put 时间复杂度 include 有一个序列,要求将其分为任意部分。对于每一部分,其值为\(at^2+bt+c\),其中\(t\)为这一部分元素总和,\(a,b,c\)给定。 容易推出状态转移方程为\(f[i]=min(f[j]+a*(sum[i]-sum[j])^2+b*(sum[i]-sum[j])+c)\) 朴素转移的时间复杂度为\(n^2\),考虑斜率优化。 假设对于决策点\(x,y\),存在\(f[x]+a*(sum[i]-sum[x])^2+b*(sum[i]-sum[x])+c>f[y]+a*(sum[i]-sum[y])^2+b*(sum[i]-sum[y])+c\) 可化简为\(f[x]+a*sum[x]^2-b*sum[x]-2*sum[i]*sum[x]>f[y]+a*sum[y]^2-b*sum[y]-2*sum[i]*sum[y]\) 即\(\frac{f[x]+a*sum[x]^2-b*sum[x]-(f[y]+a*sum[y]^2-b*sum[y])}{sum[x]-sum[y]}>2*sum[i]\) \(end\)。 特别行动队「APIO 2010」 标签:return out ret a* 优化 oid put 时间复杂度 include 原文地址:https://www.cnblogs.com/ilverene/p/11360926.html题意
思路
代码
#include