Description
Input
Output
Sample Input
2 2 100 1 100 2 3 1 10 1 11 100 12
Sample Output
330 1344
Source
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int MAX = 1100; int dp[MAX],num[MAX],a[MAX],price[MAX]; int main() { int T,n; scanf("%d",&T); while(T--){ scanf("%d",&n); memset(num,0,sizeof(num)); memset(dp,0,sizeof(dp)); for(int i = 1 ; i <= n ;i++){ scanf("%d%d",&a[i],&price[i]); num[i] = num[i-1] + a[i]; } for(int i = 1; i <= n; i++){ dp[i] = (a[i]+10)*price[i]+dp[i-1]; for(int j = 0; j < i;j++) dp[i] = min(dp[i],(num[i]-num[j]+10)*price[i]+dp[j]); } printf("%d\n",dp[n]); } return 0; }
原文:http://www.cnblogs.com/zero-begin/p/4365992.html