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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

洛谷 P4859 已经没有什么好害怕的了 解题报告

發(fā)布時(shí)間:2023/12/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷 P4859 已经没有什么好害怕的了 解题报告 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

已經(jīng)沒(méi)有什么好害怕的了

題目描述

已經(jīng)使\(\tt{Modoka}\)有簽訂契約,和自己一起戰(zhàn)斗的想法后,\(\tt{Mami}\)忽然感到自己不再是孤單一人了呢。

于是,之前的謹(jǐn)慎的戰(zhàn)斗作風(fēng)也消失了,在對(duì)\(\tt{Charlotte}\)的傀儡使用終曲——\(\tt{Tiro Finale}\)后,\(\tt{Mami}\)面臨著即將被\(\tt{Charlotte}\)的本體吃掉的局面。

這時(shí),已經(jīng)多次面對(duì)過(guò)\(\tt{Charlotte}\)\(\tt{Honiura}\)告訴了學(xué)\(OI\)的你這樣一個(gè)性質(zhì):\(\tt{Charlotte}\)的結(jié)界中有兩種具有能量的元素,一種是“糖果”,另一種是“藥片”,各有\(n\)個(gè)。在\(\tt{Charlotte}\)發(fā)動(dòng)進(jìn)攻前,“糖果”和“藥片”會(huì)兩兩配對(duì),若恰好糖果比藥片能量大的組數(shù)比“藥片”比“糖果”能量大的組數(shù)多\(k\)組,則在這種局面下,\(\tt{Charlotte}\)的攻擊會(huì)丟失,從而\(\tt{Mami}\)仍有消滅\(\tt{Charlotte}\)的可能。

你必須根據(jù)\(\tt{Homura}\)告訴你的“糖果”和“藥片”的能量的信息迅速告訴\(\tt{Homura}\)這種情況的個(gè)數(shù).

輸入輸出格式

輸入格式:

第一行兩個(gè)整數(shù)\(n\),\(k\),含義如題目所描述。

接下來(lái)一行\(n\)個(gè)整數(shù),第\(i\)個(gè)數(shù)表示第\(i\)個(gè)糖果的能量。

接下來(lái)\(n\)個(gè)整數(shù),第\(j\)個(gè)數(shù)表示第\(j\)個(gè)藥片的能量。

保證上面兩行不會(huì)有重復(fù)的數(shù)字

輸出格式:

一個(gè)答案,表示消滅\(\tt{Charlotte}\)的情況個(gè)數(shù),要 \(\bmod (10^9 + 9)\)

說(shuō)明

對(duì)于\(100\%\)的數(shù)據(jù):\(l\le n\le 2000,0\le k\le n\)


因?yàn)樵鼗ゲ幌嗤?#xff0c;所以我們可以得到應(yīng)該有多少組糖果大于藥片,即為\(d=\frac{k+n}{2}\)

稱(chēng)某個(gè)糖果\(i\)配對(duì)到比她少的藥品時(shí)為性質(zhì)\(i\),則問(wèn)題為 有多少種配對(duì)方案滿足恰好有滿足\(d\)個(gè)性質(zhì)

\(f_i\)為恰好滿足\(i\)的性質(zhì)的方案數(shù),\(g_i\)為至少滿足\(i\)個(gè)性質(zhì)的方案數(shù)。

如果研究過(guò)容斥原理,而不是只浮于套路的表面,你會(huì)明白\(g_i\)實(shí)際上是自交的,畫(huà)個(gè)\(\text{veen}\)圖簡(jiǎn)單解釋一下

每一個(gè)圓代表的方案集合為滿足某個(gè)性質(zhì)\(i\)的方案集合。

例如\(f_2\)為顏色不深不淺的黃色部分,而\(g_1\)為三個(gè)圓的面積之和(它的中間有交)

\[g_k=\sum_{i=k}^n\binom{i}{k}f_i\]

解釋一下,對(duì)于至少\(k\)個(gè)元素的集合,有\(i\)個(gè)元素的集合被重復(fù)計(jì)算了\(\binom{i}{k}\)

\[f_k=\sum_{i=k}^n(-1)^{i-k}\binom{i}{k}g_i\]

這里就是在容斥了。

事實(shí)上上面的過(guò)程就是在進(jìn)行二項(xiàng)式反演,不過(guò)我沒(méi)有研究過(guò)它的一些證明,所以只能將就的感性理解了。

為什么要引入定義這么容易誤導(dǎo)的\(g_i\)(反正我最開(kāi)始學(xué)的時(shí)候一直搞不懂“至少”)呢?

因?yàn)?span id="ozvdkddzhkzd" class="math inline">\(\tt{Ta}\)好算啊。

比如這個(gè)題,令\(dp_{i,j}\)代表前\(i\)個(gè)遞增的糖果已經(jīng)配對(duì)出了\(j\)對(duì)并且滿足\(j\)個(gè)性質(zhì)的方案數(shù),有轉(zhuǎn)移

\[dp_{i,j}=dp_{i-1,j}+dp_{i-1,j-1}\times(p_i+1-j)\]

\(p_i\)代表糖果\(i\)大于多少個(gè)藥品,可以\(two-pointer\)也可以二分求

那么就有

\[g_i=dp_{n,i}\times fac_{n-i}\]


Code:

#include <cstdio> #include <algorithm> #define rep(i,a,b) for(int i=a;i<=b;i++) #define dep(i,a,b) for(int i=a;i>=b;i--) #define st(a,b) std::sort(a,b) #define lb(a,b,c) std::lower_bound(a,b,c)-(a); #define ll long long const int N=2010; const ll mod=1e9+9; ll quickpow(ll d,ll k) {ll f=1;while(k){if(k&1)f=f*d%mod;d=d*d%mod;k>>=1;}return f; } ll dp[N][N],g[N],inv[N],fac[N],ans; int m[N],c[N],p[N],n,k; int main() {scanf("%d%d",&n,&k);fac[0]=1;rep(i,1,n) scanf("%d",c+i),fac[i]=fac[i-1]*i%mod;rep(i,1,n) scanf("%d",m+i);if(k+n&1) return puts("0"),0;k=k+n>>1;inv[n]=quickpow(fac[n],mod-2);dep(i,n-1,0) inv[i]=inv[i+1]*(i+1)%mod;st(c+1,c+1+n),st(m+1,m+1+n);rep(i,1,n) p[i]=lb(m+1,m+1+n,c[i]);dp[0][0]=1;rep(i,1,n)rep(j,0,p[i])dp[i][j]=(dp[i-1][j]+(j?dp[i-1][j-1]*(p[i]+1-j):0))%mod;rep(i,k,n)g[i]=dp[n][i]*fac[n-i]%mod;rep(i,k,n)(ans+=(i-k&1?-1:1)*fac[i]%mod*inv[i-k]%mod*inv[k]%mod*g[i])%=mod;printf("%lld\n",(ans+mod)%mod);return 0; }

2018.10.23

轉(zhuǎn)載于:https://www.cnblogs.com/butterflydew/p/9839081.html

總結(jié)

以上是生活随笔為你收集整理的洛谷 P4859 已经没有什么好害怕的了 解题报告的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。