ac**:第一行輸入乙個字串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部分後都是不同的
輸出乙個整數示例1racecar0
0示例2caaaaaab6change b a 100000
change c a 100000
change c d 50000
change b e 50000
erase d 50000
erase e 49999
199999示例3moon6erase o 5
add u 7
change d p 3
change m s 12
change n d 6
change s l 1
-1示例4xab7change 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
#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中價值最大的字串,...