JLOI2016 成績比較

2022-04-07 22:47:15 字數 2396 閱讀 4068

給定 \(n\) 個變數,每個變數有 \(m\) 個屬性,屬性 \(i\) 的值在 \([1,u_i]\) 中隨機。

第 \(1\) 個變數的所有屬性的排名以及給出,然後我們知道恰好有 \(k\) 個變數滿足所有屬性都嚴格小於等於 \(1\)

求所有可能的合法情況。答案對 \(10^9+7\) 取模。

\(n,m\le 100,u_i\le 10^9\)

方便起見,令 \(n\leftarrow n-1\),同時令 \(r_j\leftarrow n+1-r_j\) 表示有 \(r_j\) 名同學分數小於等於他。

容斥,設 \(g_i\) 表示至少有 \(i\) 個變數嚴格小於等於他。

那麼我們可以直接使用 dp 來計算 \(g_i\),那麼基礎方案數為 \(\binom\),假設屬性 \(j\) 的取值為 \(x\),那麼這 \(i\) 個變數的取值範圍均為 \(x\),那麼對於每個屬性對答案的貢獻均可以獨立乘起來,具體來說形如此:

\[\begin

&\binom\sum_^x^(u_j-x)^

\end\]

設 \(o=r_j\),不難得到:

\[\begin

&\binom\sum_^x^(u_j-x)^

\\&\rightarrow \binom\sum_^x^\sum_j \binom(-1)^j x^ju_j^

\\&\rightarrow \binom\sum_j \binom(-1)^j u_j^\sum_^x^

\end\]

設 \(f(k,x)=\sum_^x i^k\)

那麼不難得到維度 \(i\) 對答案的貢獻為:

\[\begin

&\binom\sum_j \binom(-1)^j u_j^f(o+j,u_j)

\end\]

顯然 \(o+j\) 的取值範圍為 \(1\sim n\),同時不難發現後面的式子與列舉的 \(i\) 無關,所以可以考慮預處理後式,對於 \(j=1,2...m\) 均預處理後式稱為 \(t_j\),那麼列舉 \(i\) 之後就可以 \(\mathcal o(nm)\) 的計算答案了。

我們的瓶頸在於希望得到正整數冪多項式,此時有兩種選擇:

拉格朗日插值。

伯努利數。

由於我想要複習伯努利數,所以這裡又重新進行了推導:

設 \(s_k(n)=\sum_^n j^k\)

\[\begin

&\sum_ s_k(n)\frac

\\&\rightarrow\sum_\sum_^n \frac

\\&\rightarrow\sum_^n e^

\\&\rightarrow\frac-e^x}

\\&\rightarrow\frac\times \frac-1}

\end\]

我們設前者的 egf 序列為 \(\\),後者為 \(\,\frac...\frac}\}\)

於是有 \(s_k(n)\) 即為:

\[\begin

&\sum_b_i\binom\frac}

\\&\rightarrow \frac\sum_b_i\binomn^

\end\]

計算 \(b_i\),然後直接得到多項式。

接下來,注意到:

\[\frac\times \frac=e^x

\]所以有 \(\\) 與 \(\,\frac...\frac\}\) 的二項卷積結果為 \(\\)

不難注意到 \(b_0=1\),所以我們有:

\[b_k=1-\sum_\sum_

while( cc >= '0' && cc <= '9' ) cn = cn * 10 + cc - '0', cc = getchar() ;

return cn * flus ;

}const int n = 100 + 5 ;

const int p = 1e9 + 7 ;

int fpow(int x, int k) return ans ;

}int n, m, lim, k, u[n], r[n], g[n], h[n], b[n] ;

int f[n], iv[n], fac[n], inv[n], c[n][n], a[n][n] ;

int get(int x, int k)

signed main()

rep( k, 0, n ) rep( i, 0, k )

a[k][k - i + 1] = c[k + 1][i] * b[i] % p * iv[k + 1] % p ;

rep( i, 1, m ) h[i] = ans ;

} rep( i, 1, n )

int ans = 0 ;

rep( i, k, n )

cout << ans << endl ;

return 0 ;

}

JLOI 2016 成績比較

一開始還以為是什麼玄學dp,沒想到居然是一道計數題 我寫法是參照這篇題解的。分3部分討論 1.從n 1個人中選k個被碾壓的 2.對於未被碾壓的n 1 k人,求出其有多少種成績分布情況 這裡我們不關心這些人成績的具體值,只關心其與b神的大小關係 3.求出一種合法的成績分布情況可以有多少種分配成績的方案...

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個人的方案。可以得到 ...