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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

[恩难到了]陨石的秘密

發布時間:2023/11/27 生活经验 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [恩难到了]陨石的秘密 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【描述】

公元19881231年,一顆巨大的隕石墜落在世界的政治文化中心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表達式,則{A}是yh表達式。
6. 如果A和B都是yh表達式,則AB也是yh表達式。
例如 ?()(())[] , {()[()]}, {{[[(())]]}} 都是yh表達式。
而 ()([])() , [() 都不是SS表達式。
并且,我們定義,該串總的括號最大層數為該串的深度,例如(){()}[]的深度為2。
密文中的復雜運算是這樣進行的:
設密文中每行前4個數依次為L1,L2,L3,D,求出所有深度為D,含有L1對{},L2對[],L3對()的SS串的個數,并用這個數對數11380求余數,這個余數就是密文中每行的第5個數,我們稱之為神秘數。
密文中某些行的第五個數已經模糊不清,而這些數字正是揭開隕石秘密的鑰匙?,F在科學家們聘請你來計算這個神秘數。

【輸入格式】

共一行,4個整數L1,L2,L3,D。相鄰兩個數之間用一個空格分隔。

【輸出格式】

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

【樣例輸入】

1 1 1 2

【樣例輸出】

8

【數據范圍】

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]={0 (p1==p2==p3==0)F[p1-1,p2,p3,d-1] (p1>=1)F[p1,p2-1,p3,d-1] (p1==0 && p2>=1)F[p1,p2,p3-1,d-1] (p1==0 && p2==0 && p3>=1)}

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)

初始條件

  • F[0,0,0,i]=1 (0<=i<=D)

最終的結果就是

  • F[L1,L2,L3,D]-F[L1,L2,L3,D-1]”
引用完畢。
#include <stdio.h>
#define maxn 35int 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)
{if (p1) return dp(p1-1,p2,p3,d-1);if (p2) return dp(p1,p2-1,p3,d-1);return dp(p1,p2,p3-1,d-1);
}int dp(int p1,int p2,int p3,int d)
{if (d<0) return 0;if (f[p1][p2][p3][d]==-1){f[p1][p2][p3][d]=0;for (int x1=0;x1<=p1;++x1)for (int x2=0;x2<=p2;++x2)for (int x3=0;x3<=p3;++x3){if (x1+x2+x3==0) continue;f[p1][p2][p3][d]+=(s(x1,x2,x3,d)*dp(p1-x1,p2-x2,p3-x3,d))%base;f[p1][p2][p3][d]%=base;}}return f[p1][p2][p3][d];
}int main()
{freopen("secret.in","r",stdin);freopen("secret.out","w",stdout);scanf("%d%d%d%d",&l1,&l2,&l3,&d);for (int i=0;i<=d;++i){for (int p1=0;p1<=l1;++p1)for (int p2=0;p2<=l2;++p2)for (int p3=0;p3<=l3;++p3)f[p1][p2][p3][i]=-1;f[0][0][0][i]=1;}ans=dp(l1,l2,l3,d)-dp(l1,l2,l3,d-1);ans=(ans+base)%base;printf("%d\n",ans);return 0;
}

?

?

?

轉載于:https://www.cnblogs.com/sephirothlee/archive/2010/09/25/1834775.html

總結

以上是生活随笔為你收集整理的[恩难到了]陨石的秘密的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。