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;}

原创粉丝点击