牛牛的回文串(區間dp)

2022-09-07 18:33:18 字數 1232 閱讀 3571

第一行輸入乙個字串s(都是小寫字母)表示牛妹給牛牛的串(1 ≤ |s| ≤ 50)

第二行輸入乙個整數m (0 ≤ m ≤ 50)

接下來m行的格式是

add c x

erase c x

change c1 c2 x

三種中的一種

c c1 c2都是小寫字母

1 ≤ x ≤ 100000

所有允許的操作去除x部分後都是不同的

輸出乙個整數
示例1

racecar

0

0
示例2

caaaaaab

6change b a 100000

change c a 100000

change c d 50000

change b e 50000

erase d 50000

erase e 49999

199999
示例3

moon

6erase o 5

add u 7

change d p 3

change m s 12

change n d 6

change s l 1

-1
示例4

xab

7change a c 1

change b d 1

change c e 1

change d e 1

add y 1

change y z 1

change x z 1

7
ac**:

#include#include#include#define inf 1e14 

#define ll long long

using namespace std;

char str[55];

ll dp[55][55],cost_add[30],cost[30],cost_err[30],c[30][30];//變換表

//dp[i][j]代表i~j段對稱的最小花費

void init()

}void floyd()

}int main()

if(dp[1][len]==inf) cout<<"-1"

}

最長回文子串(區間dp)

輸入乙個字串str,輸出str裡最長回文子串的長度。回文串 指aba abba cccbccc aaaa這種左右對稱的字串。串的子串 乙個串的子串指此 字元 串中連續的一部分字元構成的子 字元 串 例如 abc 這個串的子串 空串 a b c ab bc abc 輸入str str的長度 1000 ...

DP訓練 最長對稱子串(回文串,區間dp)

l2 008 最長對稱子串 25 分 對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定is pat tap symmetric?最長對稱子串為s pat tap s,於是你應該輸出11。輸入格式 輸入在一行中給出長度不超過1000的非空字串。輸出格式 在一行中輸出最長對稱子串的長度。輸入樣...

合併回文子串 區間dp

題目描述 輸入兩個字串a和b,合併成乙個串c,屬於a和b的字元在c中順序保持不變。如 abc 和 xyz 可以被組合成 axbycz 或 abxcyz 等。我們定義字串的價值為其最長回文子串的長度 回文串表示從正反兩邊看完全一致的字串,如 aba 和 xyyx 需要求出所有可能的c中價值最大的字串,...