題意:給你n,k
求長度為n的排列,逆序對個數為k的方案數
n ,k
⩽105
n,k\leqslant 10^5
n,k⩽10
5答案 mod 10^9+7
解法:下面說根號的解法
首先,這相當於求∑ai
=k(0
⩽a
i
\sum a_i=k(0\leqslant a_i∑a
i=k
(0⩽a
i的解容斥以後
如果超過k
\sqrt k
k個數超過,顯然不可能
考慮不超過k
\sqrt k
k個數超過
令b i=
ai−i
(ai≥
i)或a
ib_i=a_i-i(a_i\geq i)或a_i
bi=ai
−i(
ai≥
i)或a
i那麼相當於要求k-x的拆分*x拆分成若干個i的和的方案數
dp最後乘上容斥係數即可
#include #include #include #include using namespace std;
const int mod = 1000000007;
#define maxm 450
#define maxn 200010
int f[maxm][maxn];
int n, m;
int fact[maxn << 1], inv[maxn << 1];
inline int c(int i, int j)
int main()
if (j >= n + 1)
f[i][j] = (f[i][j] + f[i - 1][j - n - 1]) % mod;
}int ans = 0;
for (register int i = 0; i <= m; ++i)
printf("%d\n", ans);
return 0;
}
有多項式的做法,另一道題裡面講吧
我將開乙個多項式學習小記的部落格
長期記錄
LOJ 3120 珍珠 容斥 生成函式 NTT
求 有多少種序列滿足 a i subseteq 1,d 且 m leqslant sum frac 裸做的話就是乙個揹包 f i j 表示前 i 個數匹配了 j 對的方案數,然後由於沒有匹配的肯定是單個出現,所以轉移的話比較容易.再加上幾個點的特判,和不知道能不能過的矩陣乘法,大概能拿 72 分.然...
容斥原理,容斥係數
眾所周知,容斥原理是計數問題中最雞賊的東西 基本上很多計數問題都要用到容斥,但是有的時候你明明知道要容斥就是不知道怎麼容斥 所以特此寫在這裡總結一下 一般來說,這種容斥原理一般有n個性質,滿足第 i 個性質的元素集合為 a i 還有乙個全集 u 現在我們需要統計 ans u bigcap overl...
Cheerleaders(容斥定理)
題意 在乙個m行n列的矩陣裡站k個拉拉隊員,問有多少種方法,四周邊界必須有乙個隊員.這裡用到組合數加容斥定理,將重複的刪除,第一行,最後一行,第一列,最後一列.用到位運算來模擬16種情況.這裡要吐槽一下,中英文輸入法,和case中c的大小寫,wrong了無數次,最後才發現,蛋疼.include in...