恩難到了 隕石的秘密

2022-03-21 07:13:02 字數 2033 閱讀 8858

【描述】

公元19882023年,一顆巨大的隕石墜落在世界的政治文化中心cs。於是,災難降臨了,地球上出現了一系列反常的現象。當人們焦急萬分的時候,一支由cs科學家組成的考察隊趕到了出事地點。經過一番偵察,科學家們發現隕石上刻有若干行密文,每一行都包含5個整數:

1 1 1 1 6

0 0 6 3 57

8 0 11 3 2845

著名的科學家yh發現,這些密文實際上是一種複雜運算的結果。為了便於大家理解這種運算,他定義了一種yh

表示式:

1. yh表示式是僅由'','[',']','(',')'組成的字串。

2. 乙個空串是yh表示式。

3. 如果a是yh表示式,且a中不含字元'','[',']',則(a)是yh表示式。

4. 如果a是yh表示式,且a中不含字元'',則[a]是yh表示式。

5. 如果a是yh表示式,則是yh表示式。

6. 如果a和b都是yh表示式,則ab也是yh表示式。

例如  ()(()) , , } 都是yh表示式。

而 ()()() , [() 都不是ss表示式。

並且,我們定義,該串總的括號最大層數為該串的深度,例如()的深度為2。

密文中的複雜運算是這樣進行的:

設密文中每行前4個數依次為l1,l2,l3,d,求出所有深度為d,含有l1對{},l2對,l3對()的ss串的個數,並用這個數對數11380求餘數,這個餘數就是密文中每行的第5個數,我們稱之為神秘數。

密文中某些行的第五個數已經模糊不清,而這些數字正是揭開隕石秘密的鑰匙。現在科學家們聘請你來計算這個神秘數。

【輸入格式】

共一行,4個整數l1,l2,l3,d。相鄰兩個數之間用乙個空格分隔。

【輸出格式】

共一行,包含乙個整數,即神秘數

【樣例輸入】

1 1 1 2

【樣例輸出】

【資料範圍】

l1,l2,l3<=10,d<=30。

【分析】

恩,很明白,不會……

然後搜題解,找到了byd大牛。

於是看了題解,於是會了。囧。

以下引用byd大牛的題解:

「容易看出是動態規劃,但是狀態轉移方程容易考慮不周全。

題目中樣例的8種方案為

{}[()] [()]{}   () ()
可以看出每個ss表示式都可以看成由幾個小的ss組成,組成方式可能是巢狀或者連線。如果是巢狀(包括僅1層),我們把這個巢狀體看作乙個整體部分,稱為乙個組。則每個ss表示式都是由幾個組連線而成了。

設定 f[p1,p2,p3,d]為深度不超過d,包含p1個{},p2個,p3個()的ss表示式的可能組成的方案數。s[p1,p2,p3,d]為深度不超過d,包含p1個{},p2個,p3個()的乙個組的可能組成的方案數。

則狀態轉移方程為

s[p1,p2,p3,d]=
f[p1,p2,p3,d]=σ(s[x1,x2,x3,d]*f[p1-x1,p2-x2,p3-x3,d]) (0<=x1<=p1,0<=x2<=p2,0<=x3<=p3且x1,x2,x3不同時為0)

初始條件

最終的結果就是

引用完畢。

#include #define maxn 35

int f[maxn][maxn][maxn][maxn];

int l1,l2,l3,d,ans,base=11380;

int dp(int p1,int p2,int p3,int d);

int s(int p1,int p2,int p3,int d)

int dp(int p1,int p2,int p3,int d)

}return f[p1][p2][p3][d];

}int main()

ans=dp(l1,l2,l3,d)-dp(l1,l2,l3,d-1);

ans=(ans+base)%base;

printf("%d\n",ans);

return 0;

}

隕石的秘密

公元11380年,一顆巨大的隕石墜落在南極。於是,災難降臨了,地球上出現了一系列反常的現象。當人們焦急萬分的時候,一支中國科學家組成的南極考察隊趕到了出事地點。經過一番偵察,科學家們發現隕石上刻有若干行密文,每一行都包含5個整數 1 1 1 1 6 0 0 6 3 57 8 0 11 3 2845 ...

poj 1187 隕石的秘密

題目大意 求出指定要求的字串的種數,用dp a b c d 記錄有a個 b個,c個 深度為d的字串的個數,然後列舉左邊一段外層加括號的狀態,與右邊對應狀態相乘即可。include include include include include include include include incl...

POJ1187 隕石的秘密

題目大意 定義乙個串 只含有 3種 6個 字元。定義 ss 串 空串是ss表示式。若a是ss表示式,且a串中不含有中括號和大括號,則 a 是ss表示式。若a是ss表示式,且a串中不含有大括號,則 a 是ss表示式。若a是ss表示式,則是ss表示式。定義ss串深度 空串深度為0.若a可以寫成 a 其中...