BZOJ2024 舞會(動態規劃,容斥,高精度)

2022-03-20 04:34:27 字數 974 閱讀 9251

bzoj

洛谷這種關係顯然要先排序才不會不想影響。

設\(f[i][j]\)表示前\(i\)個女生中,選了\(j\)個女生配對,並且女生比男生高,剩餘的隨意匹配的方案數。

轉移:\(f[i][j]=f[i-1][j]+f[i-1][j-1]*(p-(j-1)\)

然後容斥一下即可,高精度常數巨大。

\(bzoj\)似乎過不了???

#include#include#include#include#include#include#includeusing namespace std;

#define ll long long

#define max 205

const int yw=10000;

inline int read()

struct bignum

void clear()

}f[max][max],ans,c[max][max],fac[max];

bignum operator+(bignum a,bignum b)

bignum operator-(bignum a,bignum b)

bignum operator*(bignum a,int b)

bignum operator*(bignum a,bignum b)

int n,k,a[max],b[max],p[max];

int main()

for(int i=0;i<=n;++i)f[n][i]=f[n][i]*fac[n-i];

for(int i=n;~i;--i)

for(int j=i+1;j<=n;++j)

f[n][i]=f[n][i]-c[j][i]*f[n][j];

for(int i=0;i<=k;++i)ans=ans+f[n][i];

ans.output();

return 0;

}

為什麼你不會動態規劃?

動態規劃 dynamic programming 是刷題中最常見也最重要的乙個類別,在研發崗位面試中往往佔據著重要地位。對於刷題,要寫在前面的是肯定要通過大量的練習和自身體會去把握每種題型的思路,這是大前提。不過動態規劃 以下用dp代替 屬於沒有公式的題型,這種題的特點是可能你花了很長時間去練習,卻...

教你徹底學會動態規劃 高階篇

話不多說,來看如下例題,也是在動態規劃裡面遇到過的最頻繁的乙個題,本題依然來自於北大poj 最長公共子串行 poj1458 給出兩個字串,求出這樣的乙個最長的公共子串行的長度 子串行中的每個字元都能在兩個原串中找到,而且每個字元的先後順序和原串中的先後順序一致。sample input abcfbc...

教你徹底學會動態規劃 入門篇

動態規劃相信大家都知道,動態規劃演算法也是新手在剛接觸演算法設計時很苦惱的問題,有時候覺得難以理解,但是真正理解之後,就會覺得動態規劃其實並沒有想象中那麼難。網上也有很多關於講解動態規劃的文章,大多都是敘述概念,講解原理,讓人覺得晦澀難懂,即使一時間看懂了,發現當自己做題的時候又會覺得無所適從。我覺...