n方dp哪儿错了
查看原帖
n方dp哪儿错了
616733
Lysea楼主2024/2/22 21:12

rt

#include<bits/stdc++.h>
#define int long long
#define N 1000005
#define INF 1e18
using namespace std;
int n,s[N],p[N],c[N],ans,dp[N],s1[N],s2[N];
signed main(){
	ios::sync_with_stdio(false);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>s[i]>>p[i]>>c[i];
		s1[i]=p[i]+s1[i-1],s2[i]=s2[i-1]+p[i]*s[i];
		dp[i]=INF;
	}
	dp[1]=c[1];
	for(int i=2;i<=n;i++){
		for(int j=0,tot;j<i;j++){
			dp[i]=min(dp[i],dp[j]+c[i]+s[i]*(s1[i-1]-s1[j])-(s2[i-1]-s2[j]));
		}
	}
	ans=INF;
	for(int i=1,tot;i<=n;i++){
		tot=dp[i];
		for(int j=i+1;j<=n;j++){
			tot+=(s[j]-s[i])*p[j];
		}
		ans=min(ans,tot);
	}
	cout<<ans;
	return 0;
}
2024/2/22 21:12
加载中...