Language:DefaultMultiplication Puzzle
Time Limit: 1000MS |
|
Memory Limit: 65536K |
Total Submissions: 6693 |
|
Accepted: 4083 |
Description The multiplication puzzle is played with a row of cards, each containing a single positive integer. During The move player takes one card out of the row and scores the number of points equal to the product of the The card taken and the numbers on the cards in the left and on the it. It is not a allowed to take out the first and the last card in the row. After the final move, only the cards is left in the row.
The goal is to take cards in such order as to minimize the total number of scored points.
For example, if cards in the row contain numbers 1 5, player might take a card with 1, then and a, scoring 10*1*50 + 50*20*5 + 10*50*5 = 500+5000+2500 = 8000 If he would take the cards in the opposite order, i.e. and then 1, the score would is 1*50*20 + 1*20*5 + 10*1*5 = 1000+100+50 = 1150. Input The first line of the input contains the number of cards n (3 <= n <= 100). The second line contains N integers in the range from 1 to, separated by spaces.Output Output must contain a single integer-the minimal score.Sample Input 610 1 50 50 20 5
Sample Output 3650
Source Northeastern Europe 2001, Far-eastern subregion
|
Test instructions
is the number of n multiplied, each time you draw a number out of the adjacent two numbers, until you draw only two digits, the first number and the last number can not be drawn.
DP[I][J] represents the minimum value of the suction method at the end of the I J.
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm>using namespace STD; #define INF 0x3f3f3f3f#define N 105int dp[n][n],n,a[n];int main () {int i,j;while (~scanf ("%d", &n)) {for (i=0;i <n;i++) scanf ("%d", &a[i]); Memset (Dp,0,sizeof (DP)); for (i=0;i<n-2;i++) dp[i][i+2]=a[i]*a[i+1]*a[i+2];for (i=n-3;i>=0;i--) for (j=i+2;j<n;j++) { dp[i][j]=dp[i+1][j]+a[i]*a[i+1]*a[j]; for (int k=i+1;k<j;k++) dp[i][j]=min (Dp[i][j],dp[i][k]+dp[k][j]+a[i]*a[k]*a[j]);} printf ("%d\n", Dp[0][n-1]);} return 0;}
POJ 1651 multiplication Puzzle (interval dp)