HDU 1300 Pearls (DP)

来源:互联网 发布:隐藏文件的软件 编辑:程序博客网 时间:2024/05/16 02:49

思路:

DP题型一般找状态转移方程考虑应从整体出发,到局部,再通过最优子结构到整体最优,其次就是边界问题的考虑,一般是从底向上考虑,得出边界。

 

此题最主要的考虑是不能跳跃的用质量大的珠宝来代替质量小的珠宝,只能连续的代替;

AC代码:

#include<stdio.h>#define inf 0x3f3f3f3fstruct node{  int ai;  int pi;}a[101];int dp[101];int sum[101];int main(){    int T;    int c;    int i,j;    int min;    scanf("%d",&T);    while(T--)    {       scanf("%d",&c);       sum[0]=0;       for(i=1;i<=c;i++)       {          scanf("%d%d",&a[i].ai,&a[i].pi);          sum[i]=sum[i-1]+a[i].ai;       }       dp[0]=0;       for(i=1;i<=c;i++)       {         min=inf;         for(j=0;j<i;j++)           if(min>dp[j]+(sum[i]-sum[j]+10)*a[i].pi)                min=dp[j]+(sum[i]-sum[j]+10)*a[i].pi;         dp[i]=min;       }       printf("%d\n",dp[c]);    }    return 0;}


 

原创粉丝点击