甲乙兩人在van遊戲。
他們各有k1,k2個集合[li,ri]
每個人可以從各自的每個集合中隨機選出乙個整數。 設s
1=∑甲
選的數 ,s2
=∑乙選
的數若s1>s2甲勝,s1=s2平局,s1< s2乙勝。
求三種情況各自的概率,答案對10^9+7取模(逆元)
k1,k2<=8,li<=ri<=10^7
看到k1k2辣麼小顯然是一種叫做容斥的方法啦
但是發現有上界也有下界的限制還有加有減不好做,我們可以轉換一下模型。
我們可以把甲選的每個數表示成ri
−xi ,把乙選的每個數表示成li
+xi (0 < xi < |i|)
那麼甲勝的情況就是∑(
ri−x
i)>∑(
li+x
i) ∑
(ri−
xi)−
∑(li
+xi)
>0
∑ri−
∑li−
∑xi−
∑yi>0
∑xi+
∑yi<∑r
i−∑l
i 咦?右邊是乙個常數!!!
那麼我們可以寫成∑x
i+∑y
i+z=
sum 的形式(0<=k<=+∞) 其中s
um=∑
ri−∑
li−1
-1是因為前面是小於號,不帶等於。
那麼這樣就變成了一堆有上限的數的和等於乙個常數的套路了。。。
直接隔板法就好了。。。
這個地方k1k2比較小,組合數可以直接暴力求。。。
然後就沒有了。。。
#include
#include
#include
#define fo(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
typedef long long ll;
const int mo=1e9+7;
int ty,n,m,l,r,sum,len[17],ans1,ans2,ans3,ni;
int mi(int
x,int
y) int c(int
m,int n)
void dfs(int
x,int
y,int z)
dfs(x+1,y,z);
dfs(x+1,-y,z+len[x]);
}int main()
}
51nod 1667 概率好題
甲乙進行比賽。他們各有k1 k2 個集合 l i,ri 每次隨機從他們擁有的每個集合中都取出乙個數 s1 甲取出的數 s2 同理 若s 1 s2 甲勝 若s1 s2 平局 否則乙勝 分別求出甲勝 平局 乙勝的概率。對於甲的每個數可以表示為這樣乙個形式ri xi 其中xi 0,ri l i 類似的,對...
51nod1667 概率好題
考慮計算方案數,令xi ai li 0 xi ri l i 得到 l 1 x1 r2 x2 x1 x2?r2 l1 x 1 和 x2 並沒有本質差別,用插板法解決。取等號時可以直接算,取小於等於時可以加入乙個元素來放置多出來的部分。上限用容斥來解決。include include using nam...
51nod 1287 加農炮 好題啊好題
1287 加農炮 codility 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 乙個長度為m的正整數陣列a,表示從左向右的地形高度。測試一種加農炮,炮彈平行於地面從左向右飛行,高度為h,如果某處地形的高度大於等於炮彈飛行的高度h a i h 炮彈會被擋住並落在...