#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct node{
int v,k,c,l;
}a[10100];
long long dp[10100],sum[10100];
bool cmp(const node &a,const node &b){
return a.v<b.v;
}
int main(){
int n;
while( scanf("%d" ,&n) == 1 && n){
for(int i=1;i<=n;i++){
scanf("%d%d%d%d",&a[i].v,&a[i].k,&a[i].c,&a[i].l);
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)
sum[i]=sum[i-1]+a[i].l;
for(int i=1;i<=n;i++){
dp[i]=a[i].k + a[i].c * sum[i];
for(int j=1;j<i;j++){
dp[i]=min(dp[i] , dp[j] + (sum[i] - sum[j]) * a[i].c + a[i].k);
}
}
printf("%lld\n",dp[n]);
}
}
uva 11400 DP 需要推理
最新推荐文章于 2023-03-17 22:19:36 发布