NYOJ 1023 還是回文 區間dp

2021-08-17 04:22:06 字數 891 閱讀 1803

時間限制:

2000 ms  |  記憶體限制:

65535 kb

難度:3描述

判斷回文串很簡單,把字串變成回文串也不難。現在我們增加點難度,給出一串字元(全部是小寫字母),新增或刪除乙個字元,都會產生一定的花費。那麼,將字串變成回文串的最小花費是多少呢?

輸入多組資料

第乙個有兩個數n,m,分別表示字元的種數和字串的長度

第二行給出一串字元,接下來n行,每行有乙個字元(a~z)和兩個整數,分別表示新增和刪除這個字元的花費

所有數都不超過2000

輸出最小花費

樣例輸入

3 4

abcb

a 1000 1100

b 350 700

c 200 800

樣例輸出

900

//區間動態規劃    dp[i,j]

初始狀態為單個字元,自身回文即花費為dp[i,i]=0

每次的規劃都是從兩邊開始,選擇一種最小的花費

狀態轉移方程:dp[i,j]=min(dp[i+1][j]+cost[s[i]-'a'],dp[i][j-1]+cost[s[j]-'a']);

#include#include#define min(a,b) (a>b?b:a)

#define n 2100

char s[n];

int dp[n][n];

int cost[n]=;

char c;

int main()

for(w=1; w}

} printf("%d\n",dp[1][m]);

} return 0;

}//ac

NYOJ1023 還是回文(區間dp)

分析 這道題是乙個簡單區間的dp,狀態定義為dp i j i 到 j 這個區間形成回文的最小花費,分兩種情況討論 s i s j dp i j dp i 1 j 1 s i s j dp i j min dp i j 1 cost s j a dp i 1 j cost s i a cost tt ...

NYOJ 1023 還是回文

時間限制 2000 ms 記憶體限制 65535 kb 難度 3 描述判斷回文串很簡單,把字串變成回文串也不難。現在我們增加點難度,給出一串字元 全部是小寫字母 新增或刪除乙個字元,都會產生一定的花費。那麼,將字串變成回文串的最小花費是多少呢?輸入多組資料 第乙個有兩個數n,m,分別表示字元的種數和...

NYOJ1023 還是回文 區間DP,詳細

題目 還是回文 時間限制 2000 ms 記憶體限制 65535 kb 難度 3 描述 判斷回文串很簡單,把字串變成回文串也不難。現在我們增加點難度,給出一串字元 全部是小寫字母 新增或刪除乙個字元,都會產生一定的花費。那麼,將字串變成回文串的最小花費是多少呢?輸入 多組資料 第乙個有兩個數n,m,...