可以朝 dp 的方向去想,令 dp[i][l][r] 代表在中序區間 [l, r] 中以 i 為根結點去構造出一棵樹的最大分數
那轉移就是 dp[i][l][r] = max(dp[j][l][i - 1] * dp[k][i + 1][r] + a[i]), j \in [l, i), k \in (i, r]
記得考慮 basecase 跟 左/右子樹為空的情況
回朔的部分就是用 dp 紀錄的答案去回朔就好,但是可能有多組解,請輸出字典序最小的那個
可以朝 dp 的方向去想,令 dp[i][l][r] 代表在中序區間 [l, r] 中以 i 為根結點去構造出一棵樹的最大分數
那轉移就是 dp[i][l][r] = max(dp[j][l][i - 1] * dp[k][i + 1][r] + a[i]), j \in [l, i), k \in (i, r]
記得考慮 basecase 跟 左/右子樹為空的情況
回朔的部分就是用 dp 紀錄的答案去回朔就好,但是可能有多組解,請輸出字典序最小的那個
不愧是 daniel
可以朝 dp 的方向去想,令 dp[i][l][r] 代表在中序區間 [l, r] 中以 i 為根結點去構造出一棵樹的最大分數
那轉移就是 dp[i][l][r] = max(dp[j][l][i - 1] * dp[k][i + 1][r] + a[i]), j \in [l, i), k \in (i, r]
記得考慮 basecase 跟 左/右子樹為空的情況
回朔的部分就是用 dp 紀錄的答案去回朔就好,但是可能有多組解,請輸出字典序最小的那個
不愧是 daniel
daniel07 你真的太諧了