感谢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;
}
本文介绍了一种基于斜率优化的算法实现,并通过具体的代码示例展示了如何利用该算法求解特定问题。文章中详细解释了算法的工作原理及其实现过程。
666

被折叠的 条评论
为什么被折叠?



