日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

hdu 3962(AC自动机+矩阵优化dp)

發(fā)布時(shí)間:2025/3/16 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu 3962(AC自动机+矩阵优化dp) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載標(biāo)記處:http://blog.csdn.net/woshi250hua/article/details/7599472


題目大意給定m個(gè)DNA病毒序列,求堿基構(gòu)成的長(zhǎng)度為n且含有兩個(gè)以上DNA病毒序列,結(jié)果對(duì)10007取模。


解題思路:本題代碼量大,較為綜合,需用到AC自動(dòng)機(jī)改造而成的Trie圖、DP思想、矩陣快速冪。

? ? ?如果n比較小,那么本題可以用DP解,由于題目明顯的有三個(gè)狀態(tài),未含病毒串、含一個(gè)病毒串,含兩個(gè)及兩個(gè)以上病毒,根據(jù)這三個(gè)就可以寫出一個(gè)狀態(tài)轉(zhuǎn)移方程。但是本題可以簡(jiǎn)化一下,先求出總的組合種數(shù),再減去含有一個(gè)病毒串和未含病毒串的種數(shù)就是解了。那么狀態(tài)就只有2個(gè)。

? ? ?狀態(tài)轉(zhuǎn)移方程為:if (j->next 為病毒串) ? ? ? ?dp[i+1][j->next][1] += dp[i][j][0] ;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?else if (j->next非病毒串) ? dp[i+1][j->next][1] ?+= dp[i][j][1];

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dp[i+1][j->next][0] += dp[i][j][0];

? ??但是本題n特別大,必須用矩陣進(jìn)行優(yōu)化。先將Trie圖轉(zhuǎn)化為一個(gè)(total * 2) * (total * 2)(total為總節(jié)點(diǎn)數(shù))可達(dá)矩陣,如果i ?< total,那說(shuō)明這個(gè)節(jié)點(diǎn)和他的后綴不含有病毒串,如果i > total,那說(shuō)明這個(gè)節(jié)點(diǎn)和他的后綴含有1個(gè)病毒串。

? ? 具體實(shí)現(xiàn)是這樣的,if (i->next->flag) matrix[i][i->next+total]++;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?else matrix[i][i->next]++,matrix[i+total][i->next+total]++;

? ? ?這樣,矩陣就被分成四塊相當(dāng)于四個(gè)象限,第2個(gè)象限(i和j都小于total)怎么走都不會(huì)出現(xiàn)病毒串,那么經(jīng)過(guò)A^n,他們的值就是最后病毒序列為0個(gè)的種數(shù)。第1個(gè)象限表示i走到j(luò)-total會(huì)出現(xiàn)一個(gè)病毒DNA序列,第四個(gè)象限i-total走到j(luò)-total,原來(lái)含1個(gè)病毒串現(xiàn)在還是1個(gè)。



這里的矩陣優(yōu)化dp確實(shí)做得很巧妙,實(shí)際上矩陣優(yōu)化dp只能夠處理一維和二維的狀態(tài),在二維的情況下,dp[i][]只能夠與dp[i-1][]有關(guān)。如果大于二維,比如本題的情況,就想辦法分解成二維的,以本題為例,第三維的狀態(tài)只有0和1兩種可能,我們實(shí)際上是把第二維擴(kuò)大了1倍,得到的是一個(gè)(2*tot)*(2*tot)的狀態(tài)矩陣,這樣就可以表示出第三維的狀態(tài)了。剩下的就是按照原來(lái)的狀態(tài)轉(zhuǎn)移方程來(lái)填矩陣的系數(shù)了。

這道題讓我想起了上一道DNA Sequence,也是AC自動(dòng)機(jī)+矩陣,現(xiàn)在再來(lái)看這道題,其實(shí)也就是先列出狀態(tài)轉(zhuǎn)移方程,再構(gòu)造的優(yōu)化矩陣。

總結(jié)

以上是生活随笔為你收集整理的hdu 3962(AC自动机+矩阵优化dp)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。