公元12023年,一顆巨大的隕石墜落在南極。
於是,災難降臨了,地球上出現了一系列反常的現象。
當人們焦急萬分的時候,一支中國科學家組成的南極考察隊趕到了出事地點。
經過一番偵察,科學家們發現隕石上刻有若干行密文,每一行都包含5個整數:
1 1 1 1 6
0 0 6 3 57
8 0 11 3 2845
著名的科學家ss發現,這些密文實際上是一種複雜運算的結果。
1. ss表示式是僅由』』,』[『,』]』,』(』,』)』組成的字串。
2. 乙個空串是ss表示式。
3. 如果a是ss表示式,且a中不含字元』』,』[『,』]』,則(a)是ss表示式。
4. 如果a是ss表示式,且a中不含字元』』,則[a]是ss表示式。
5. 如果a是ss表示式,則是ss表示式。
6. 如果a和b都是ss表示式,則ab也是ss表示式。
例如
()(())
}
都是ss表示式。
而
()()()
[()
不是ss表示式。
乙個ss表示式e的深度d(e)定義如下:
例如()的深度為2。
密文中的複雜運算是這樣進行的:
設密文中每行前4個數依次為l1,l2,l3,d,求出所有深度為d,含有l1對{},l2對,l3對()的ss串的個數,並用這個數對當前的年份11380求餘數,這個餘數就是密文中每行的第5個數,我們稱之為神秘數。
密文中某些行的第五個數已經模糊不清,而這些數字正是揭開隕石秘密的鑰匙。
現在科學家們聘請你來計算這個神秘數。
共一行,4個整數 l1,l2,l3,d。
共一行,包含乙個整數,即神秘數。
0≤l1,l2,l3≤10,
0≤d≤30
1 1 1 2
8
先想到 f[d][i][j][k] 表示深度為d, i個{}, j個, k個()的方案數
新增括號轉移很簡單,但是
對於 相同深度不好轉移比如
f[d][i][j][k] += f[d][i - ii][j - jj][k - kk] + f[d][ii][jj][kk]
這個轉移的重複問題很難解決,
eg: {}() + {}() == {} + (){}() == {} + (){}()
發現重複了三次,如果更長的串呢?重複很難解決
那麼乾脆通過字首和思想來解
f[d][i][j][k] 表示深度 小於等於 d, i個{}, j個, k個()的方案數
那麼f[d][a][b][c] - f[d - 1][a][b][c]即為所求
怎麼轉移從f[d-1]到f[d]呢? f[d - 1] (加括號) * f[d] (拼接)即可 (所以f[0~d][0][0][0]初始化為1)
詳細看**
poj 1187 隕石的秘密
題目大意 求出指定要求的字串的種數,用dp a b c d 記錄有a個 b個,c個 深度為d的字串的個數,然後列舉左邊一段外層加括號的狀態,與右邊對應狀態相乘即可。include include include include include include include include incl...
恩難到了 隕石的秘密
描述 公元19881231年,一顆巨大的隕石墜落在世界的政治文化中心cs。於是,災難降臨了,地球上出現了一系列反常的現象。當人們焦急萬分的時候,一支由cs科學家組成的考察隊趕到了出事地點。經過一番偵察,科學家們發現隕石上刻有若干行密文,每一行都包含5個整數 1 1 1 1 6 0 0 6 3 57 ...
POJ1187 隕石的秘密
題目大意 定義乙個串 只含有 3種 6個 字元。定義 ss 串 空串是ss表示式。若a是ss表示式,且a串中不含有中括號和大括號,則 a 是ss表示式。若a是ss表示式,且a串中不含有大括號,則 a 是ss表示式。若a是ss表示式,則是ss表示式。定義ss串深度 空串深度為0.若a可以寫成 a 其中...