JLOI 2016 成績比較

2022-05-31 02:00:09 字數 1979 閱讀 5100

一開始還以為是什麼玄學dp,沒想到居然是一道計數題

我寫法是參照這篇題解的。

分3部分討論:

1.從n-1個人中選k個被碾壓的

2.對於未被碾壓的n-1-k人,求出其有多少種成績分布情況(這裡我們不關心這些人成績的具體值,只關心其與b神的大小關係

3.求出一種合法的成績分布情況可以有多少種分配成績的方案數

顯然,總答案就是把這三部分答案相乘。

part1.從n-1個人中選k個被碾壓的

方法:無

顯然,答案就是\(c(n-1,k)\)。

part2.對於未被碾壓的n-1-k人,求出其有多少種成績分布情況

方法:計數+容斥

對於第i門功課,顯然有\(r[i]-1\)個人在b神前面(題面都告訴你了),那麼單看這一門功課,顯然有\(c(n-1-k,r[i]-1)\)種分布情況。(從n-1-k個人挑出\(r[i]-1\)個,排到b神前面)

所以,我們根據乘法原理,先算出:

\[\prod _^c(n-1-k,r[i]-1)

\]但是,你會發現,我們求出來的這個東西代表的是至多有n-1-k個人不被碾壓的方案數

舉個例子:

假設此時沒有被碾壓的有3個人,m=2,r[1]=2,r[2]=3,記3個人的標號為1,2,3。

那麼我們顯然會統計到

第一門課1比b神高;

第二門課1,2比b神高這種情況。

但是,你會發現:3此時會被b神碾壓。

所以,我們要容斥。

令\[f(x)=\prod _^c(x,r[i]-1)

\]那我們這部分答案就是\(f(n-1-k)-f(n-2-k)+f(n-3-k)-f(n-4-k)+\cdots\)

複雜度:\(o(nm)\)

**:

namespace solve2 

ll work(int n)

return ans;

}}

part3.求出一種合法的成績分布情況可以有多少種分配成績的方案數

方法:計數+容斥

對於一種暴力的寫法,我們可以列舉b神的成績,那麼答案就是(設此時滿分為u,排名在b神之上的有a人,b神以下的有b人):

\[\sum _^i^b\cdot (u-i)^a

\]顯然,u非常大,我們沒辦法暴力列舉。

但同時,你會發現,n很小,最多這有n種不同的成績

那麼,我們把i從1列舉到n,算出不同成績數為i的方案數,最後加法原理加一下就好了。

令\[g(u,a,b)=\sum _^i^b\cdot (u-i)^a

\]也就是:

\[\sum _^g(i,a,b)\cdot c(u,i)

\]但是,我們列舉i算出的並不是不同成績數為i的方案數,而是不同成績數在[1,i]之間的方案總數。(不懂得手動模擬一下)

那就容斥唄。

我們令\(d(i)\)表示不同成績數為i的方案數,那麼就有:

\[d(i)=g(i,a,b)-\sum_^^d(i)\cdot c(u,i)\)。

複雜度:\(o(n^2m)\)

**:

namespace solve3 

ll gg(int u,int a,int b)

p[0][0]=1;//注意,這裡不要忘了(我就是這部分調了很久)

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

inv[1]=1;

for(int i=2; i<=100; i++)inv[i]=(mod-mod/i)*inv[mod%i]%mod;

}

JLOI2016 成績比較

給定 n 個變數,每個變數有 m 個屬性,屬性 i 的值在 1,u i 中隨機。第 1 個變數的所有屬性的排名以及給出,然後我們知道恰好有 k 個變數滿足所有屬性都嚴格小於等於 1 求所有可能的合法情況。答案對 10 9 7 取模。n,m le 100,u i le 10 9 方便起見,令 n le...

bzoj4559 JLOI2016 成績比較

time limit 20 secmemory limit 256 mbg系共有n位同學,m門必修課。這n位同學的編號為0到n 1的整數,其中b神的編號為0號。這m門必修課編號為0到m 1的整數。一位同學在必修課上可以獲得的分數是1到ui中的乙個整數。如果在每門課上a獲得的成績均小於等於b獲得的成績...

BZOJ 4559 成績比較

題意 sol 第一眼看起來就是個稍微麻煩的組合數 但是發現如果欽點哪些同學分數在某科目上分數比b神低以後的方案,就會出現沒有被欽 點碾壓的同學也會被碾壓,後面欽點分數時可能欽點的一直是同一批人導致人數不夠不被碾壓的人數 於是可以考慮容斥,用至少i ii個人的方案算出恰好k kk個人的方案。可以得到 ...