BZOJ2729 排隊(組合數學 高精度)

2021-08-08 04:39:46 字數 1128 閱讀 8087

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 ...