码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 1260

时间:2015-06-09 15:29:45      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:

//状态转移方程:   F[i] = min{f[k] + (a[k+1]+………+a[i]+10} * p[i]}
#include <iostream>
#define MAXN 105
using namespace std;

int dp[MAXN];
int n[MAXN];
int p[MAXN];

int main()
{
    //freopen("acm.acm","r",stdin);
    int test;
    int c;
    int sum;
    int tem;
    int i;
    int j;
    int k;
    int min;
    int cur;
    cin>>test;

    while(test --)
    {
        memset(dp,0,sizeof(dp));
        cin>>c;
        for(i = 0; i < c; ++ i)
        {
            cin>>n[i];
            cin>>p[i];
        }
        sum = 0;
        
        
        dp[0] = (n[0]+10)*p[0];
        sum += n[0];
        for(i = 1; i < c; ++ i)
        {
            sum += n[i];
            cur = sum;
            min = 123456789;
            tem = (cur+10)*p[i];
            if(tem < min)
            {
                min = tem;
            }
            for(k = 0; k < i; ++ k)
            {
                cur -= n[k];
                tem = dp[k] + (cur+10)*p[i];
                if(tem < min)
                {
                    min = tem;
                }

            }
            dp[i] = min;
        }
        cout<<dp[c-1]<<endl;
    }
}

 

POJ 1260

标签:

原文地址:http://www.cnblogs.com/gavinsp/p/4563349.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!