NOI模擬 長壽花 dp 組合數學

2021-09-29 09:54:03 字數 644 閱讀 2361

傳送門

題意:有n層,每層a[i]個位置,m個顏色。每個位置可以選擇乙個顏色。要求相鄰顏色不相同,相鄰兩層顏色集合不完全相同。求方案數。

發現a[i]最大5000,直接n方預處理。

根據套路設

列舉第i位是否啟用新顏色得到

然後再來考慮很多層。

設如果不管相鄰限制,

然而相鄰不能完全相同。那就直接減去

所以遞推。

#includeusing namespace std;

#define in read()

#define int long long

int in

const int n=1000000,m=5003;

int g[m][m],f[2][m],n,m,mod,vis[n+3],prime[n+3],cnt,c[m],a[n+3],maxx,box[n+3];

void seive(int x,int inv)

void prepare1() }}

void prepare2()

}void prepare3()

signed main()//cout<

} cout<

return 0;

}

校內模擬 長壽花(組合數學DP)

簡要題意 有 n nn 層架子,第i ii層上有a ia i ai 個位置,一共有m mm種可用顏色,你需要給所有位置染色並滿足下列限制 同層相鄰位置不染同色 相鄰兩層的所用顏色集合,在去重之後不相等。問你有多少種方案。模數任意。其實這道題讓人考場上不太想做的唯一原因就是模數任意。設coe f i ...

合法括號序列(dp 組合數學)

鍵盤上有左括號 右括號 和退格鍵 共三個鍵。牛牛希望按鍵n次,使得輸入的字串恰好乙個合法的括號序列。每按一次左括號 字串末尾追加乙個左括號 每按一次右括號 字串末尾追加乙個右括號 每按一次退格鍵 會刪掉字串的最後乙個字元,特別的,如果字串為空,牛牛也可以按退格,但是什麼都不會發生。輸出方案數對p取模...

NOIP模擬 排隊(組合數學)

在成都某中學有m個男生與n個女生排隊,這個學校的女生比較古怪,從某個位置 包含這個位置 開始往前數,男生的數量超過了女生的數量,女生會感覺不安全,於是會大叫起來,為了構建和諧校園,安排隊伍時應該避免這樣的情況。請你計算出不會引發尖叫的排隊方案的概率。排隊方案不同定義 當且僅當某個某個位置人不一樣,如...