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 }

 

你可能感兴趣的:(PEAR)