傳送門
大意:給
n 朵花上色,從
m種顏色裡面選擇恰好
k 種顏色,求總數mod 1e
9+7
首先如果用
k 種顏色給花上色的話,肯定是k∗
(k−1
)n−1
種方案,但是要求的是恰好
k 種,很容易想到用容斥原理解決這個問題。 設a
i表示沒選第
i 種顏色的種類數目,則結果為
|a同理1¯¯¯
¯∩a2
¯¯¯¯
∩...
∩ak¯
¯¯¯|
=k∗(
k−1)
n−1−
∑|ai
|+∑|
ai∩a
j|+.
..+(
−1)k
∑|a1
∩a2∩
...∩
ak|
很容易計算∑|
ai|=
c1k∗
(k−1
)∗(k
−2)n
−1
∑|所以要求的就是ai1∩
ai2∩
...∩
aij|
=cjk
∗(k−
j)∗(
k−j−
1)n−
1
|a因為m≤1¯¯¯
¯∩a2
¯¯¯¯
∩...
∩ak¯
¯¯¯|
∗ckm
1e9,
k≤1e
6 這裡面會用到乙個組合數的技巧
cim=ci
−1m∗
m−i+
1i
#include
#include
#include
#include
#include
#include
#include
#define debug(x) cout<<(x)<#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef pair pii;
const int mod = 1e9+7;
const int maxn = 1e6+10;
ll inv[maxn];
ll cm[maxn],ck[maxn];
ll power_mod(ll x,ll n)
return res;
}void cal(ll m,ll k)
}void init()
int main()
else
ans = ans*cm[k]%mod;
}printf("case #%d: %lld\n",++kase,ans);
}return
0;}
UVALive 7040 組合數 容斥原理
朵花上色,從m 種顏色裡面選擇恰好k 種顏色,求總數mod 1e9 7種顏色給花上色的話,肯定是k k 1 n 1種方案,但是要求的是恰好k 種,很容易想到用容斥原理解決這個問題。設ai 表示沒選第i 種顏色的種類數目,則結果為 首先有t組資料,每組資料有 3 個數 n,m,k,分別代表一共有 n ...
HDU 2461 Rectangles(容斥原理)
題意 給出n個矩形的左下角和右上角座標,要求進行m次操作,每次對t個矩形進行塗色 給出這t個矩形的序號 要求計算出每次塗色時需要塗色的面積。塗色可以覆蓋,即每次操作不受前面任何操作的影響 分析 矩形之間可以覆蓋,每次操作要計算覆蓋後圖形的面積,這裡就要用到容斥原理 每次操作時有如下關係式 需要塗色的...
poj 3695 Rectangles 容斥原理
在容斥原理題單裡看到這個題,第一想法肯定是掃瞄線啊。但一看題單分析,還真是容斥。矩形相交的圖形和文氏圖差不多。然後dfs容斥就好了 題單裡第四題 include include include using namespace std struct rec rec rec 30 int nums 30...