喵哈哈村有一台奇怪的紙帶印表機,每次操作只能先決定乙個大寫字母(a到z)在一條紙帶上列印這個字母任意長度的連續序列,印表機可以選擇在紙帶的任意位置開始列印,並且無論紙帶上原來是什麼內容,都可以用新列印的內容覆蓋。那麼,對乙個目標的字串序列,請計算在乙個空白紙帶上最少需要的列印次數。例如,我們要列印的目標串是abcba,那麼最優的方案是:在空白知道上連續列印5個a:aaaaa,從第二個a開始,連續列印3個b:abbba,列印乙個c:abcba,因此abcba的最少列印次數是3次。
輸入 每個測試輸入包含1個測試用例
輸入只有一行,乙個長度大於1,小於等於50的目標字串,字串中每個字元都是a到z的大寫英文本元。
輸出 輸出乙個整數,
樣例輸入1 複製
aaaaa
abcba
樣例輸出1
1 3
【思路分析】很典型的區間dp題目(可是窩佷鶸啊,不過這次學會了)。
dp[i][j]代表從第i個字元刷到第j個字元至少要刷多少次。當str[i]==str[k]的時候,dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k+1][j]) 。
【ac**】
#include
#include
#include
#include
using
namespace
std;
#define ll long long
char str1[105];
int dp[105][105];//dp[i][j]的含義為從i刷到j至少要刷多少次
int main()}}
}printf("%d\n",dp[0][len-1]);
}return
0;}
qscoj 喵哈哈村的盧西奧
描述為了拯救喵哈哈村,這個世界必須要存在英雄。一名叫做盧西奧的英雄站了出來!他現在面臨乙個難題 他被要求將一棵樹拆成3份,使得每乙份中所有節點的權值和相等。他希望知道,對於一棵給定的有根樹,在選取其中2個非根節點並將它們與它們的父親節點分開後,所形成的三棵子樹的節點權值之和能夠兩兩相等的方案有多少種...
qscoj 喵哈哈村的扔硬幣遊戲 區間更新)
描述有一排硬幣,一共n枚,初始時都是正面朝上。接下來會有很多次操作,每次會將其中一段連續的硬幣翻一面。求最後硬幣的結果。輸入本題包含多組測試資料。第一行輸入兩個數字n,m分別表示硬幣的數量和操作的數量。其中0輸出 連續輸出這n枚硬幣的最終結果,其中0表示正面朝上,1表示反面朝上。樣例輸入1 複製5 ...
qscoj 喵哈哈村的狼人殺大戰 5
描述喵哈哈村最近熱衷於玩乙個叫做狼人殺的遊戲!沈寶寶同學今天他抽到的是狼人的身份,按照他的一貫玩法,他喜歡一開始就自爆,讓大家都不能說話,可謂心狠手辣。於是他早早的就出去了。但是他現在很無聊,於是他出了一道題給自己玩。如果乙個數的二進位制表示中有k個1的話,那麼這個就是就是k th數。比如有10 1...