感谢QT神犇的技术支持!
斜率优化不想发,这是n^2算法+决策性优化,容易被卡。
斜率优化不想发,这是n^2算法+决策性优化,容易被卡。
#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<iostream>
#include<cstring>
#include<algorithm>
#define LL long long
#define INF 999999
using namespace std;
LL n,d;
LL w[2001000],dis[2001000],sw[2001000],val[2001000];
int main()
{
scanf("%lld",&n);
for(int i=1;i<=n;i++)
{
scanf("%lld%lld",&w[i],&d);
val[i]=val[i-1]+w[i];
sw[i]=sw[i-1]+dis[i]*w[i];
dis[i+1]=dis[i]+d;
}
// for(int i=1;i<=n;i++) cout<<dis[i]<<" "<<val[i]<<' '<<sw[i]<<endl;
LL last=2,ans=999999999;
for(LL i=1;i<=n;i++)
for(LL j=last;j<=n;j++)
{
LL ans1=(dis[i]*val[i])-sw[i];
LL ans2=dis[j]*(val[j]-val[i])-(sw[j]-sw[i]);
LL ans3=dis[n+1]*(val[n]-val[j])-(sw[n]-sw[j]);
if(ans>ans1+ans2+ans3) ans=ans1+ans2+ans3,last=j;
}
printf("%lld\n",ans);
return 0;
}