P2308 新增括號 dfs記錄dp路徑

2022-05-31 12:45:12 字數 540 閱讀 3632

傳送門

\(一看肯定是區間dp(因為和和合併石子很相似,都要加n-1次)\)

\(轉移方程為(其中he[i][j]是i到j的和)\)

\[dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+he[i][j])

\]\(問題ⅰ.如何輸出括號\)

\(在轉移的時候,我們可以用vis[i][j]來記錄i到j合併的斷點k,所以可以分別遞迴i至k和k+1至r\)

void dfs(int l,int r)

那求中間和也是一樣的道理。

void dfs(int l,int r)

void dfs(int l,int r)

} for(int l=2;l<=n;l++)

for(int i=1;i+l-1<=n;i++)

}} dfs(1,n);

for(int i=1;i<=n;i++)

cout

}

P2308 新增括號

一看這題 我能ac 看完這題 我要換題 這題第二問其實就是乙個鏈的石子合併,也就是不用處理環 所以一三問怎麼處理?陣列 mid i j 記錄區間 l r 的斷點 陣列 le i 表示 a i 左邊有幾個左括號 陣列 ri i 表示 a i 右邊有幾個右括號 遞迴處理一下括號數 單數字兩邊肯定不能有括...

luogu 2308新增括號

傳送門現在要添上n 1對括號,加法運算依括號順序進行,得到n 1個中間和,求出使中間和之和最小的添括號方法。這道題其實是乙個很簡單的區間dp,中間和的意思是括號裡面的和,也就是說,乙個括號就有乙個中間和,然後求總的中間和。設dp l r 表示區間 l,r 內最大中間和是多少,然後dp方程也是乙個很簡...

洛谷 p2651 新增括號III 思維,數學

題目傳送 題意 思路 我們首先想想如何判斷乙個分數是否能約分成整數 判斷方法 1 我們可以分解分子的質因子和分母的質因子,如果分母的質因子數量和種類數完全被分子的質因子包括,那麼一定可以約分成為整數 2 如果分母的所有因子都包含在分子的因子中如 10 和 20。10中的1 2 5 10都也是20的因...