非常巧妙的一个动态规划q[i] 保存1~i个珍珠的个数,那么我们只需要枚举所有状态即可。。。。
#include<iostream>
#include<cstdio>
using namespace std;
int q[10000],dp[10000],p[10000];
int main()
{
int n,m;
while(cin>>n)
{
for(int i=1;i<=n;i++)
{
cin>>q[i];
q[i] += q[i-1];
}
for(int i=1;i<=n;i++)
cin>>p[i];
for(int i=1;i<=n;i++)
{
dp[i] = (q[i]+10)*p[i];
for(int j=1;j<i;j++)
{
dp[i] = min(dp[i],(q[i]-q[j]+10)*p[i]+dp[j]);
}
}
cout<<dp[n]<<endl;
}
}