count the buildings
不管是從左邊看還是從右邊看,視線總是會被中間最高的給擋住所以我們把左邊和右邊分組來看。
對於某一邊,我們確定出能夠看見的樓房,那麼不能夠看見的樓房就可以任意排列
我們把能看見的樓房,與下乙個能看到的樓房(不包括下乙個樓房)之間的樓看為一組
可以考慮現將最高的拿出來,那麼可以考慮左邊需要有f-1個房子成遞增關係,那麼可以將左邊的房子分成f-1個組(環),右邊有b-1個房子成遞減關係,也是如此,這就讓人yy到了第一類stirling數,第一類stirling數s(p,k)是將將p個物體排成k個非空迴圈排列的方法數(k個排列是有先後順序的)。可以想到,每一組都是有順序的(與環等價)。除此之外,還要計算組合數,就是在(f-1+b-1)組中取出f-1個到左邊,乘上即是答案。
#include
#include
#include
using namespace std;
typedef long
long ll;
const
int maxn =
2000+10
;const
int mod =
1000000007
;int n,f,b;
ll s[maxn]
[maxn]
;ll c[maxn]
[maxn]
;void
init()
}}intmain()
else
}return0;
}
斯特靈(Stirling)數
遞推式 s n 1,k s n,k 1 n s n,k 解釋 考慮第n 1個元素 1 單獨形成迴圈排列,剩下的有s n,k 1 種方法 2 和別的元素一起形成迴圈排列,n個元素形成迴圈排列的方法數是s n,k 第n 1個可以放在第i個元素左邊,共有n種放法,一共是n s n,k include in...
Stirling數 斯特靈數
在組合數學,stirling數可指兩類數,都是由18世紀數學家james stirling提出的。stirling 數有兩種,第一類和第二類 stirling 數,它們自 18世紀以來一直吸引許多數學家的興趣,如尤拉 柯西 西爾沃斯特和凱萊等。後來哥本哈根 copenhagen 大學的尼爾森 nie...
斯特靈數 stiriling
第一類stiriling數 先給出定義 s n,k 個元素的專案分作 個環排列 的方法數目 此時我們就可以忽略排列的開始元素 舉個例子 遞推公式為 s n,k n 1 s n 1,k s n 1,k 1 解釋 當我們考慮到第n個物品的時候 1.將第n個物品單獨放置 s n 1,k 1 2.將第n個物...