真就洛谷神级,n方暴力直接过了。。
查看原帖
真就洛谷神级,n方暴力直接过了。。
271491
koreyoshi_lemon楼主2022/8/15 09:52
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+7;
int n,w[N],d[N],t[N];
int f[N][3],s[N];
inline int dis(int p,int q){return s[q]-s[p];}
inline int sum(int l,int r){return t[r]-t[l-1];}
signed main(void)
{
	scanf("%lld",&n);
	for(int i=1;i<=n;i++)	{
		scanf("%lld%lld",w+i,d+i);
		s[i+1]=s[i]+d[i];
		t[i]=t[i-1]+w[i];
	}
	memset(f,0x3f,sizeof(f));
	f[0][0]=0;
	for(int i=1;i<=n;i++)
		f[0][0]+=w[i]*dis(i,n+1);
	for(int i=1;i<=n;i++)
		for(int j=0;j<i;j++)
			for(int t=1;t<3;t++)
				f[i][t]=min(f[i][t],f[j][t-1]-dis(i,n+1)*sum(j+1,i));
	int ans=1<<30;
	for(int i=1;i<=n;i++)
		ans=min(ans,f[i][2]);
	printf("%lld\n",ans);
	return 0;
}
/*sum(dis(k,n)*w[k])->sum(dis(k,i)*w[k])
f[i]=f[j]-sum(dis(i,n)*w[k]);*/
2022/8/15 09:52
加载中...