bzoj 1911 [Apio2010]特别行动队
2021-06-10 05:04
标签:pre efi 前缀和 pac std span c++ for printf dp[i]表示在前第i个士兵在特别行动队中最后一个时战斗力的最大值 sum[i]表示战斗力的前缀和 答案一定是dp[n] dp[i]=dp[j]+a*(sum[i]-sum[j])^2+b*(sum[i]-sum[j])+c 令j优于k,则得到 2*a*sum[i]*(sum[k]-sum[j])>dp[k]+a*sum[k]^2-b*sum[k]-(dp[j]+a*sum[j]^2-b*sum[j]) 令f[x]=dp[x]+a*sum[x]^2-b*sum[x] 2*a*sum[i]*(sum[k]-sum[j])>f[k]-f[j] 2*a*sum[i]>(f[k]-f[j])/(sum[k]-sum[j]) 用单调队列维护即可 bzoj 1911 [Apio2010]特别行动队 标签:pre efi 前缀和 pac std span c++ for printf 原文地址:https://www.cnblogs.com/huangchenyan/p/10617889.htmlDP+斜率优化
#include