題目背景
好吧,該來的廢話還是要來的。
畫外音:
終於,在兩輪的重重選拔之後,我們的海選終於結束了。現在進入我們的迴圈賽環節。循壞賽一共有四場,最後選出得分最高的16人進入對決,得分相同則和按用時排名,若仍有不能確定16人的情況,則去尾處理。
歡迎您收看有洛谷衛視重磅推出的綜合性文藝知識類節目「開心玩遊戲,輕鬆贏比賽」,我是luwm。學程式設計,就選洛谷, 感謝洛谷online judge對本節目的大力支援。下面,我們有請10位選手上台,由大螢幕給出題目。
題目描述
現在有乙個字串,你可以對這個字串進行拆分,如abcvsdaas可以拆分為abc|vs|d|aasa,現在再給你乙個字典,要求分割成的每乙個子串必須要有包含其中的任意乙個單詞。那麼最多可以分為幾個子串呢?
輸入輸出格式
輸入格式:
第一行,一行字串
第二行乙個數n,表示字典中字串的數量
接下來n行,每行乙個字串,表示字典中的乙個字串。
輸出格式:
乙個數,最多的分割數。
輸入輸出樣例
輸入樣例#1:
asdsd
3 as
sd ds
輸出樣例#1:
2 說明
特殊情況:
如果原字串不能被分割,請輸出0
資料範圍:
對於20%的資料,1<=len(s)<=50,1<=n<=50
對於100%的資料,1<=len(ai)<=len(s)<=300,1<=n<=500
題解:
f[j]表示從1到j最大分割數
#include
#include
#include
#include
using
namespace
std;
int n,m,f[1000]=;
char a[10000],b[505][505];//f[j]表示從1到j最大分割數
int l,num,leng[10000],ans=0;
bool x;
int main()
for(int i=0;i//迴圈a,找到相同子串
for(int j=1;j<=n;j++)//迴圈種類
}if(x)//如果成功,更新後面的點}}
}printf("%d ",f[l-1]);//注意n-1
}
洛谷 P2031 腦力達人之分割字串
題目描述 現在有乙個字串,你可以對這個字串進行拆分,如abcvsdaas可以拆分為abc vs d aasa,現在再給你乙個字典,要求分割成的每乙個子串必須要有包含其中的任意乙個單詞。那麼最多可以分為幾個子串呢?題目分析 隨機跳題,跳到一道水題,動態規劃 trie樹。include include ...
洛谷 P2031 腦力達人之分割字串
好吧,該來的廢話還是要來的。畫外音 終於,在兩輪的重重選拔之後,我們的海選終於結束了。現在進入我們的迴圈賽環節。循壞賽一共有四場,最後選出得分最高的16人進入對決,得分相同則和按用時排名,若仍有不能確定16人的情況,則去尾處理。歡迎您收看有洛谷衛視重磅推出的綜合性文藝知識類節目 開心玩遊戲,輕鬆贏比...
洛谷 P2031 腦力達人之分割字串
f i 表示到第i位可獲得的最大分割次數,對於每個f i 都可由其符合條件的字首轉移過來,條件就是當前串除了字首的剩餘字元裡有所給單詞,然後一看,這不是在剩餘字元裡找有沒有所給單詞嗎?所以果斷kmp,其實本題好像不用kmp,暴力模擬就可以,但是為了練習kmp裝逼,所以就寫一下.1 include2 ...