求助
查看原帖
求助
160839
Prean楼主2020/5/8 18:29

本地输出38,求助QwQ

#include<iostream>
const int M=5e4+5;
int n,L,r,l=1,s[M],q[M],dp[M];
inline int pow(int a){return a*a;}
inline int y(int a){return dp[a]+pow(s[a]+L);}
signed main()
{
	int i,j;
	std::ios::sync_with_stdio(false);
	std::cin>>n>>L;++L;
	for(i=1;i<=n;++i)
	{
		std::cin>>s[i];s[i]+=s[i-1]+1;
		while(l<=r&&(y(q[l+1])-y(q[l])<=2*s[i]*(s[q[l+1]]-s[q[l]])))++l;
		j=q[l];dp[i]=dp[j]+pow(s[i]-s[j]-l);
		while(l<=r&&((y(q[r])-y(q[r-1]))*(s[i]-s[q[r]])>=(y(i)-y(q[r]))*(s[q[r]]-s[q[r-1]])))--r;
		q[++r]=i;
	}
	std::cout<<dp[n];
}
2020/5/8 18:29
加载中...