2026-04-17 13:26:21 +09:00

28 lines
824 B
TypeScript

import { start } from "repl";
export {};
const input = require("fs").readFileSync(0).toString().trim().split("\n");
const N: number = Number(input[0]);
let rc: number[][] = []
for(let i=1; i<=N; i++) rc.push(input[i].split(" ").map(Number));
let dp: number[][] = Array.from({length : N}, () => new Array(N).fill(0));
for(let len=2; len<=N; len++) {
for(let start=0; start<=N-len; start++) {
const end: number = start + len - 1;
dp[start][end] = Number.MAX_VALUE;
for(let k=start; k<end; k++) {
const leftOp: number = dp[start][k];
const rightOp: number = dp[k+1][end];
const mergeOp: number = rc[start][0]*rc[k][1]*rc[end][1];
dp[start][end] = Math.min(dp[start][end], leftOp + rightOp + mergeOp);
}
}
}
console.log(dp[0][N-1]);