bzoj2111 Perm 排列計數

2022-05-18 09:40:10 字數 979 閱讀 3913

稱乙個1,2,...,n的排列p1,p2...,pn是magic的,當且僅當2<=i<=n時,pi>pi/2. 計算1,2,...n的排列中有多少是magic的,答案可能很大,只能輸出模p以後的值

input

輸入檔案的第一行包含兩個整數 n和p,含義如上所述。

output

輸出檔案中僅包含乙個整數,表示計算1,2,⋯, �的排列中, magic排列的個數模 p的值。

sample input

20 23
sample output

16
hint

100%的資料中,1 ≤ � n ≤ 106, p� ≤ 10^9,p是乙個質數。 資料有所加強

題解:題目意思比較好理解,就是問你有多少種小根堆,那麼根可以確定,然後左邊右邊就是

組合一下,確定,如果只有乙個點,那麼方案數就為1,size為1,不然就是左右子樹合併。

這樣瞎搞。。。(⊙o⊙)…,就好了。

1 #include2 #include3 #include4 #include5 #include6

#define n 1000007

7#define m 1007

8#define ll long long

9using

namespace

std;

1011

intn,p;

12ll fac[n],ni[n],f[n];

13int

siz[n];

1415 ll c(int n,int

m)16

21int

main()

2241

else

if(i*2

<=n)

4246

else

4751

}52 printf("

%lld\n

",f[1

]);53 }

bzoj2111 perm 排列計數

記憶體限制 512 mib 時間限制 1000 ms 標準輸入輸出 題目描述 稱乙個1,2,n的排列p1,p2.pn是magic的,當且僅當2 i n時,pi pi 2.計算1,2,n的排列中有多少是magic的,答案可能很大,只能輸出模p以後的值 輸入格式 輸入檔案的第一行包含兩個整數 n和p,含...

bzoj2111 Perm 排列計數 組合數學

一開始以為當i為奇數時不需要pi pi 2,翻了一下題解發現 2是整除。然後這實際上就是求一顆節點數為n的大根堆有多少種。定義f i 為這可樹種以i為根的子樹的方案數,s i 表示子樹的節點數,那麼考慮s i 個數,一定是將最小的給i,剩餘的s i 1 個給左兒子,這s i 1 個可以隨機取,因此共...

Perm排列計數(bzoj2111)

time limit 10 sec memory limit 259 mb submit 2686 solved 811 submit status discuss 稱乙個1,2,n的排列p1,p2 pn是magic的,當且僅當2 i n時,pi pi 2.計算1,2,n的排列中有多少是magic的...