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 }