問有多少個1∼n
1\sim n
1∼n的排列,滿足從左邊只走上坡能看到a
aa個數,從右邊只走上坡能看到b
bb個數
那麼先把最高值分開,那麼左邊有a−1
a-1a−
1個,右邊有b−1
b-1b−
1個,那麼共有a+b
−2
a+b-2
a+b−
2個,而樣子類似合唱隊形還可以旋轉,所以其實就是在n−1
n-1n−
1個數中坐在a+b
−2
a+b-2
a+b−
2個圓桌的方案數,再選擇a+b
−2
a+b-2
a+b−
2個數中選擇a−1
a-1a−
1個放左邊,那麼總而言之,答案就是
c (a
+b−2
,a−1
)∗st
irli
ng(n
−1,a
+b−2
)c(a+b-2,a-1)*stirling(n-1,a+b-2)
c(a+b−
2,a−
1)∗s
tirl
ing(
n−1,
a+b−
2),後面是第一類斯特林數,時間複雜度o(n
a+t)
o(na+t)
o(na+t
)
#include
#include
#define rr register
using
namespace std;
const
int n=
50001
,m=201
,mod=
1e9+7;
int stir[n]
[m],c[m]
[m];
inline
signed
iut(
)inline
void
print
(int ans)
inline
signedmo(
int x,
int y)
signed
main()
for(rr int t=
iut(
);t;
--t)
return0;
}
洛谷P5408 第一類斯特林數 行
給定 n 1 leq n le 262144 對於所有的整數 i in 0,n 求出 pmod 考慮第一類斯特林數的生成函式 sum x k x 其中生成函式的 k 次項的係數就是我們要求的第一類斯特林數。考慮倍增。x x x n 記 f x x 假設我們已經知道了 f x 如何去求出 f x n ...
HDOJ 4372 第一類斯特林數
有一系列的樓房,高度從1 n,然後從左側看能看到f個樓房,右側看能看到b個樓房,問有多少個方案數滿足。首先我們知道乙個結論 n的環排列的個數與n 1個元素的排列的個數相等,因為p n,n n n 1 可以肯定,無論從最左邊還是從最右邊看,最高的那個樓一定是可以看到的.假設最高的樓的位置固定,最高樓的...
HDU 3625 第一類斯特林數
第一類斯特林數 n 個人坐在 r個圓桌的方案數 hdu2625 他要最多破 k 個門,即形成最多 k 個迴圈,不能單獨乙個形成迴圈,這樣不合法,自己房間的鑰匙放在自己的房間裡面。第一類斯特林數 n個球放成r個非空迴圈 includeusing namespace std const int maxn...