POJ 1260 Pearls DP

题目: http://poj.org/problem?id=1260

第一次贪心做的,WA,后来一想是不对的。。

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <algorithm>
 4 
 5 int c[1010], w[1010], sum[1010], dp[1010];
 6 int main()
 7 {
 8     int t, n;
 9     scanf("%d", &t);
10     while(t--)
11     {
12         scanf("%d", &n);
13         sum[0] = 0;
14         for(int i = 1; i <= n; i++)
15         {
16             scanf("%d %d", &c[i], &w[i]);
17             sum[i] = sum[i-1] + c[i];
18         }
19 
20         dp[0] = 0;
21         for(int i = 1; i <= n; i++)
22         {
23             dp[i] = (c[i] + 10) * w[i] + dp[i-1];
24             for(int j = 0; j < i; j++)
25             {
26                 dp[i] = std::min(dp[i], dp[j]+(sum[i]-sum[j]+10) * w[i]);
27             }
28         }
29         printf("%d\n", dp[n]);
30     }
31     return 0;
32 }
View Code

 

posted @ 2013-08-23 11:24  Anti-Magic  阅读(131)  评论(0编辑  收藏  举报