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 }