BZOJ3622 已經沒有什麼好害怕的了

2021-08-28 18:33:06 字數 1726 閱讀 5716

已經使 modoka 有簽訂契約, 和自己一起戰鬥的想法後 , mami 忽然感到自己不再是孤單一人了呢.

於是, 之前的謹慎的戰鬥作風也消失了 , 在對 charlotte 的傀儡使用終曲——tiro finale後 , mami 面臨著即將被 charlotte 的本體吃掉的局面.

這時, 已經多次面對過 charlotte 的 homura 告訴了學 oi 的你這樣乙個性質——charlotte的結界中有兩種具有能量的元素——一種是「糖果」 , 另一種是「藥片」 , 每種各有 n 個. 在charlotte 發動進攻前, 「糖果」和「藥片」會兩兩配對,若恰好「糖果」比「藥片」能量大的組數比「藥片」比「糖果」能量大的組數多 k 組, 則在這種局面下, charlotte 的攻擊會丟失,從而 mami 仍有消滅 charlotte 的可能. 你必須根據 homura 告訴你的「糖果」和「藥片」的能量的資訊迅速告訴 homura 這種情況的個數.

第一行兩個整數 n, k, 含義如題目描述.

接著第二行 n 個整數, 第 i 個數表示第 i 個糖果的能量.

第三行 n 個整數, 第 j 個數表示第 j 個藥片 的能量.

乙個整數, 表示消滅 charlotte 的情況個數.

答案可能會很大, 所以 mod (1 0^9 + 9)

4 25 35 15 45

40 20 10 30

我們先將糖果和藥片分別排序,然後設t[i]表示比第i個糖果能量小的編號最大的藥片的編號。

設然後剩下的糖果在隨意分配,也就是說

然後我們的答案就是糖果》藥片的組數剛好為(n+k)/2的方案數。

因為f[n][i]表示的是至少有i組糖果》藥片的方案數,所以我們要容斥。設容斥係數為g[i],則

**:

#include#include#include#include#include#include#include#include#include#include#define ll long long

#define n 2005

#define mod 1000000009

using namespace std;

inline int get() while('0'<=ch&&ch<='9') return x*f;}

int n;

int k;

int a[n],b[n];

int t[n];

ll f[n][n],ans,fac[n];

ll g[n],c[n][n];

int main()

k=(n+k)/2;

int tem=0;

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

f[0][0]=1;

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

} }fac[0]=1;

for(int i=1;i<=n;i++) fac[i]=fac[i-1]*i%mod;

for(int i=0;i<=n;i++)

c[0][0]=1;

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

for(int j=0;j<=i;j++)

c[i][j]=(!j||i==j)?1:(c[i-1][j-1]+c[i-1][j])%mod;

g[k]=1;

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

} for(int i=k;i<=n;i++)

cout<

return 0;

}

bzoj 3622 已經沒有什麼好害怕的了

我好害怕這種題 兩個陣列排序後,處理出next i 表示滿足tang i yao j 的最大的j。f i j 前i種糖果,有j個糖比藥多,不考慮剩餘情況的方案數 也就是剩餘n j個糖果的放法算一種,最後乘上階乘。f i j f i 1 j f i 1 j 1 max next i j 1,0 開始忘...

BZOJ 3622 已經沒有什麼好害怕的了

這名字起的。題意 給出兩數列a,b都有n個元素,元素兩兩互不相同,問有多少種方案使得恰好 a i b j 的數目 a i b j 的數目 k?轉化 恰好有a i b j 的數目 n k 2 如果n k為奇數無解。link here 蒟蒻連普通dp也想不到啊otz 首先將糖果藥片們排序 設糖果i大於的...

BZOJ3622 已經沒有什麼好害怕的了

題意 給定兩個長度為n的互不相同的序列,將其兩兩配對,求有多少種配對使得a i b i 的對數減去其他對數恰好為k。一道經典的計數題,但思路理清後發現並不算難。首先設x為a i 小於b i 的對數。x x k n 2 x n k 所以當n k為奇數,答案為0。先令ne i 表示小於a i 的最後乙個...