qscoj 喵哈哈村的印表機遊戲(區間dp)

2021-07-29 07:14:05 字數 896 閱讀 3387

喵哈哈村有一台奇怪的紙帶印表機,每次操作只能先決定乙個大寫字母(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...