本题四个着眼点
(1) 要求要买的珍珠的数量是一定的
(2)所买的珍珠的质量允许提高,但不允许下降
(3)输入时,后输入的珍珠价格一定比前面输入的要贵
(4) 由(2)(3)知,珍珠的替代必须是连续的,不能跳跃替代代码如下
#include<stdio.h>
#include<string.h>
int min(int x,int y)
{
return x<y?x:y;
}
void main()
{
int t,sum[2000],dp[2000],a[2000],p[2000];
int i,j,n;
scanf("%d",&t);
while(t--)
{
memset(dp,0,sizeof(dp));
sum[0]=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d %d",&a[i],&p[i]);
sum[i]=sum[i-1]+a[i];
dp[i]=(sum[i]+10)*p[i];
}
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
dp[i]=min(dp[i],(sum[i]-sum[j]+10)*p[i]+dp[j]);
printf("%d\n",dp[n]);
}
}