HNOI2012 排隊 高精度

2022-05-07 22:57:18 字數 779 閱讀 6991

某中學有 n 名男同學,m 名女同學和兩名老師要排隊參加體檢。他們排成一條直線,並且任意兩名女同學不能相鄰,兩名老師也不能相鄰,那麼一共有多少種排法呢?(注意:任意兩個人都是不同的)

不難發現男生可以分開女生和老師,女生和老師也可以互相分開。

於是我們先把男生給全部排好,先放兩個老師,討論一下她們是被男生分開還是暫時相鄰後面再被女生分開。

於是可以得到最終的答案的式子:

\[n!\times a_^2 \times a_^m+n!\times (n+1)\times 2 \times m\times a_^

\]然後發現要高精度

高精度可以直接用python3來實現

import sys

import math

#sys.stdin=open("luogu3223.in","r")

#sys.stdout=open("luogu3223.out","w")

ans=0

n,m=map(int,input().split())

def f(x):

return math.factorial(x)

def a(x,y):

return f(x)//f(x-y)

if(n+1>=2 and n+3>=m):

ans+=f(n)*a(n+1,2)*a(n+3,m)

if(n+2>=m-1 and m>=1):

ans+=f(n)*(n+1)*2*m*a(n+2,m-1)

print(ans)

洛谷 P3223 HNOI2012 排隊

某中學有 n 名男同學,m 名女同學和兩名老師要排隊參加體檢。他們排成一條直線,並且任意兩名女同學不能相鄰,兩名老師也不能相鄰,那麼一共有多少種排法呢?注意 任意兩個人都是不同的 輸入格式 只有一行且為用空格隔開的兩個非負整數 n 和 m,其含義如上所述。對於 30 的資料 n 100,m 100 ...

HNOI2012 礦場搭建

題目鏈結 演算法 對於任何乙個聯通塊,如果坍塌的是乙個聯通塊中的割點的話,那麼分割成的兩個小聯通塊中必須保證各有乙個出口。我們考慮所有的割點將原圖分割成若干個小聯通塊接下來分類討論 1 小塊不與任何乙個割點相連,那我們需要在這裡設立兩個出口,以保證任何乙個出口坍塌後,還有乙個出口可用。2 小塊只與乙...

HNOI2012 礦場搭建

顯然需要求一下點雙 然後列舉每乙個點雙,考慮進行分類討論 如果這乙個聯通塊裡面只有這乙個點雙,也就是這個點雙裡面沒有割點,那麼我們至少需要建造兩個出口,才能保證能跑出去 因為有可能選的那個塌了 如果這個點雙裡面有乙個割點,那麼有兩種情況,一種是割點塌了,這樣我們需要選出1個點,或者割點沒塌,這樣我們...