POJ 1260 Pearls(DP)

题目链接

无语的一个题。做法是普通的O(n^2)的DP,这个题啥意思啊。

 1 #include <cstring>
 2 #include <cstdio>
 3 #include <string>
 4 #include <iostream>
 5 #include <vector>
 6 using namespace std;
 7 int dp[101],p[101],o[101];
 8 int f(int a,int b)
 9 {
10     return a < b ? a:b;
11 }
12 int main()
13 {
14     int t,n,i,j,Min,temp;
15     scanf("%d",&t);
16     while(t--)
17     {
18         memset(dp,0,sizeof(dp));
19         scanf("%d",&n);
20         for(i = 1;i <= n;i ++)
21         scanf("%d%d",&p[i],&o[i]);
22         for(i = 1;i <= n;i ++)
23         {
24             Min = 1000000000;
25             temp = p[i];
26             for(j = i-1;j >= 0;j --)
27             {
28                 Min = f(Min,dp[j]+(temp+10)*o[i]);
29                 temp += p[j];
30             }
31             dp[i] = Min;
32         }
33         printf("%d\n",dp[n]);
34     }
35     return 0;
36 }

 

posted @ 2013-01-21 19:32  Naix_x  阅读(148)  评论(0编辑  收藏  举报