题目大意
思路
在本题中,需要理解的一点在于:这些给出的灯泡你必须要用完,也就是说,你可以使用不同的电源来接多个灯泡,但是灯泡必须要用完。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct Lamps
{
int v,vs,pri,num;
} l[1100];
bool cmp(Lamps a,Lamps b)
{
return a.v < b.v;
}
int dp[1100],suml[1100],n;
int main()
{
while(cin>>n)
{
if(n==0) break;
suml[0] = 0;
for(int i = 1; i <= n; i++)
{
cin>>l[i].v>>l[i].vs>>l[i].pri>>l[i].num;
}
dp[0] = 0;
sort(l+1,l+n+1,cmp);
for(int i = 1; i <= n; i++)
{
suml[i] = suml[i-1]+l[i].num;
}
for(int i = 1; i <= n; i++)
{
dp[i] = suml[i]*l[i].pri + l[i].vs;
for(int j = i-1; j >= 0; j--)
{
dp[i] = min(dp[i],dp[j]+(suml[i]-suml[j])*l[i].pri+l[i].vs);
}
}
cout<<dp[n]<<endl;
}
return 0;
}
Hit
原本以为是只用一种灯泡就可以了,一直没有理解题目的意思。