POJ 1260 Pearls

解题思路:dp

dp方程:

//dp公式
//opt[i]=min{opt[j]+[a[j+1]+....+a[i]+10]*p[i]}
//Code
#include<iostream>
using namespace std;
#define MAXN 1e9
int main()
{
int n,i,j,c,m,t,a[100],p[100],opt[101]={0};
scanf(
"%d", &n);
while (n--)
{
scanf(
"%d", &c);
for(i=0;i<c;i++)scanf("%d %d",&a[i], &p[i]);
for(i=0;i<c;opt[i+1]=m,i++)
for(m=MAXN,j=i,t=a[j]+10;j>=0;j--,t+=a[j])
if(m>opt[j]+t*p[i])m=opt[j]+t*p[i];
printf(
"%d\n",opt[c]);
}
return 0;
}

 

 

 

posted on 2010-12-24 11:19  ltang  阅读(186)  评论(0编辑  收藏  举报

导航