POJ 1260 dp
来源:互联网 发布:专车抢单软件 编辑:程序博客网 时间:2024/06/04 19:17
//11148292c00h00g1260Accepted388K0MSG++751B2012-12-30 12:49:31 证明在这里:http://liangsun.org/posts/poj-1260-pearls-report///仔细体会一下,还是和龟兔赛跑那道题目有些相似//dp[i]表示购买前i种珠宝所需要的最小花费//dp[i]=min(dp[i],dp[j]+(ai[j+1]+ai[j+2]+...+ai[i]+10)*pi[i]); 0<=j<i #include<stdio.h>#include<stdlib.h>#include<algorithm>using namespace std;int n,c;int ai[105];//数量 int pi[105];//价值 int dp[105]; int main(){ scanf("%d",&n); while(n--){ for(int i=0;i<105;i++) dp[i]=99999999; dp[0]=0; scanf("%d",&c); for(int i=1;i<=c;i++){ scanf("%d%d",&ai[i],&pi[i]); } int sum; for(int i=1;i<=c;i++){ for(int j=0;j<i;j++){ sum=0; for(int k=j+1;k<=i;k++){ sum+=pi[i]*ai[k]; } sum+=10*pi[i]; dp[i]=min(dp[i],sum+dp[j]); } } printf("%d\n",dp[c]); } return 0;}