首先把a、b排序。設f
i,j 表示做到a隊第
i 個人,有
j個人贏的方案數。
如果第i
個人贏了,那麼fi
−1,j
−1×(
can−
(j−1
))⟶f
i,j(
can 為第
i 個人能贏的人數)。
如果第i
個人輸了,那麼需要往後考慮輸給誰,這就很麻煩。
那麼我們先不管,也就是fi
−1,j
⟶fi,
j 然後
fi,j
求的就是至少有
j 個人贏的方案數。設g
i=fn
,i,h
i 為恰好贏
i 個人的方案數。
那麼有gi=
∑j≥i
hj⋅c
ij移項:hi=
gi−∑
j>ih
j⋅ci
j 然後倒著做去重。
至於這個
c ,可以發現如果用狀態表示每個人的匹配,會發現有多種狀態能轉移到一種狀態,於是去掉即可。
注意n與k同奇偶的時候才有解,k=0只要統計一邊。
#include
#include
#include
#include
#define fo(i,j,k) for(int i=j;i<=k;i++)
#define fd(i,j,k) for(int i=j;i>=k;i--)
#define n 2010
#define mo 1000000007
#define ll long long
using namespace std;
int a[n],b[n];
ll f[n][n];
ll c[n][n];
ll jc[n];
ll h[n],g[n];
int main()
jc[0]=1;
fo(i,1,n) jc[i]=jc[i-1]*i
%mo;
fo(i,1,n) scanf("%d",&a[i]);
fo(i,1,n) scanf("%d",&b[i]);
sort(a+1,a+n+1);
sort(b+1,b+n+1);
int p=0;
f[0][0]=1;
fo(i,1,n)
}fo(i,0,n) g[i]=f[n][i]*jc[n-i]%mo;
fd(i,n,0)
if(!k) printf("%lld",h[n/2]);
else
if((n+k)%2==1) printf("0");
else
printf("%lld",(h[(n+k)/2]+h[(n-k)/2])%mo);
}
對盜鏈說再見
第一頁內隨機的產生乙個數 0 15 dechex 儲存在session內 然後將url使用此標記進行運算,隨便你運算了,不過要能逆過來才行 第二頁則檢測是否有此標記,有則進行逆運算,然後將變數取出 優點 必須訪問站點url才有效 缺點 儲存到本地的頁面鏈結全部失效,盜鏈失效 php ob start...
跟死聯接說再見
隨著網際網路技術的迅猛發展,各種資訊呈現 式的增長,有關統計顯示,搜尋引擎在網民中的使用率僅次於email,高達79 它就像電信黃頁一樣成為社會的資訊嚮導,成為網際網路電子商務的核心服務,成為使用者查詢資訊的必備工具。想必大家一定也和我一樣的感覺,雖然搜尋引擎使用方便,資訊量大,但在眾多的搜尋鏈結中...
擁抱cmder,和cmd說再見
blog blog.csdn.net fbysss 作為乙個程式設計師,即使是在windows工作環境,cmd也是我們必不可少的使用工具。然而,windows發展了這麼多年,cmd還是一如既往 毫無改進。下面先列舉cmd幾大不能忍的 特性 1.視窗size不能便捷縮放 2.複製文字,不能直接用滑鼠拷...