hnoi2012 排隊
題意:某中學有 n 名男同學,m 名女同學和兩名老師要排隊參加體檢。他們排成一條直線,並且任意兩名女同學不能相鄰,兩名老師也不能相鄰,那麼一共有多少種排法呢?(任意兩人不同)
排列組合+高精度
考慮先放男生,後放老師,再放女生
先用男生把兩個老師隔開,再用男生和老師把所有女生隔開
方案數為: a(n,n)*a(n+1,2)*a(n+3,m)
或者用女生隔開老師
方案數為:a(n,n)*a(m,1)*a(2,2)*a(n+1,1)*a(n+3,m-1)(此時兩個老師視為整體)
注意排列公式: a(m,n) = m!/(m-n)!
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int sm = 2e3 + 10,mod = 1e8;
int n,m;
int max(int x,int y)
struct bign
void init()
bign operator * (const
int x)
while(ret.val[ret.len-1] == 0 && ret.len > 1) --ret.len;
return ret;
}bign operator + (const bign & x)
while(ret.val[ret.len-1]==0 && ret.len>1)
--ret.len;
return ret;
}void print()
}a,b;
int main()
a = a * (n*(n+1));
}if(m!=0 && m-1
<=n+2)
b = b * (2*m*(n+1));
}if(!flaga) a.val[0] = 0;
if(flagb) a = a + b;
a.print();
}return
0;}
BZOJ 2729 高精度 組合數學
思路 考慮 把男生排成一排 女生和老師往裡插 分成兩種情況.1.女生中間夾著老師 2.女生中間沒有夾著老師 求一下組合 階乘就好了 先放python 簡潔易懂 def fact n temp 1 for i in range 1,n 1 temp i return temp defc n,m if ...
NOIP模擬 排隊(組合數學)
在成都某中學有m個男生與n個女生排隊,這個學校的女生比較古怪,從某個位置 包含這個位置 開始往前數,男生的數量超過了女生的數量,女生會感覺不安全,於是會大叫起來,為了構建和諧校園,安排隊伍時應該避免這樣的情況。請你計算出不會引發尖叫的排隊方案的概率。排隊方案不同定義 當且僅當某個某個位置人不一樣,如...
bzoj1008 越獄 組合數學
監獄有連續編號為1 n的n個房間,每個房間關押乙個犯人,有m種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄 輸入兩個整數m,n.1 m 10 8,1 n 10 12 可能越獄的狀態數,模100003取餘 2 366種狀態為 000 001 ...