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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

P4859-已经没有什么好害怕的了【容斥,dp】

發布時間:2023/12/3 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P4859-已经没有什么好害怕的了【容斥,dp】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正題

題目鏈接:https://www.luogu.com.cn/problem/P4859


題目大意

兩個長度為nnn的序列a,ba,ba,b兩兩匹配,求ai>bia_i>b_iai?>bi?的組數比ai<bia_i<b_iai?<bi?的組數多kkk的方案數。
保證輸入數字兩兩不同


解題思路

其實就是求恰好有n+k2\frac{n+k}{2}2n+k?ai>bia_i>b_iai?>bi?的匹配方案。

先設fi,jf_{i,j}fi,j?表示到aaa的第iii個,已經選擇了jjj組的方案。轉移起來比較麻煩,我們不知道bbb中選了哪些。

aaabbb排序后,設lil_ili?表示一個最大的數字使得ai>blia_i>b_{l_i}ai?>bli??,然后就可以dpdpdp
fi,j=fi?1,j+fi?1,j?1×(li?j+1)f_{i,j}=f_{i-1,j}+f_{i-1,j-1}\times(l_i-j+1)fi,j?=fi?1,j?+fi?1,j?1?×(li??j+1)

之后發現我們很難固定其他配對的大小,可以考慮容斥,設gig_igi?表示至少有iii對滿足ai>bia_i>b_iai?>bi?的方案,那么有gi=fi×(n?i)!g_i=f_i\times (n-i)!gi?=fi?×(n?i)!。
然后就可以直接容斥了,因為gig_igi?中有(ik)\binom{i}{k}(ki?)中方案選出kkk個配對滿足,所以容斥系數就是(?1)i?k(ik)(-1)^{i-k}\binom{i}{k}(?1)i?k(ki?)
答案就是
∑i=kn(?1)i?k(ik)gi\sum_{i=k}^n(-1)^{i-k}\binom{i}{k}g_ii=kn?(?1)i?k(ki?)gi?
時間復雜度O(n2)O(n^2)O(n2)


code

#include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; const ll N=2100,P=1e9+9; ll n,k,C[N][N],a[N],b[N],f[N][N],g[N],l[N],ans; signed main() {scanf("%lld%lld",&n,&k);if((n+k)&1)return puts("0")&0;k=(n+k)/2;C[0][0]=1;for(ll i=1;i<=n;i++)for(ll j=0;j<=i;j++)C[i][j]=(C[i-1][j]+(j?C[i-1][j-1]:0))%P;for(ll i=1;i<=n;i++)scanf("%lld",&a[i]);for(ll i=1;i<=n;i++)scanf("%lld",&b[i]);sort(a+1,a+1+n);sort(b+1,b+1+n);for(ll i=1;i<=n;i++) for(ll j=1;j<=n;j++)if(b[j]<a[i])l[i]=j;else break;f[0][0]=1;for(ll i=1;i<=n;i++)for(ll j=0;j<=n;j++)f[i][j]=(f[i-1][j]+(j?f[i-1][j-1]*max(l[i]-j+1,0ll)%P:0))%P;for(ll i=n,s=1;i>=0;i--,s=s*(n-i)%P)g[i]=f[n][i]*s%P;for(ll i=k;i<=n;i++){ll tmp=g[i]*C[i][k]%P;(ans+=((i-k)&1)?P-tmp:tmp)%=P;}printf("%lld\n",ans);return 0; } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的P4859-已经没有什么好害怕的了【容斥,dp】的全部內容,希望文章能夠幫你解決所遇到的問題。

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