AHOI2012 樹屋階梯

2022-03-27 05:32:45 字數 1125 閱讀 3087

卡特蘭數!

至於為什麼是卡特蘭數,就稍微說那麼一兩句吧

對於乙個高度為\(i\)的階梯,我們可以在左上角填乙個高度為\(k\)的階梯,右下角填乙個高度為\(i-1-k\)的階梯剩下的我們用乙個大的長方形填上就可以啦

比如這個樣子

之後還需要高精,但是為了簡單好寫,這裡可以分解質因數,之後就變成另乙個單精度乘高精了

**

#include#include#include#include#define ll long long

#define re register

#define maxn 1005

inline int read()

int n,f[maxn],p[maxn];

int to[maxn],num[maxn];

int a[10005];

int l;

inline void mul(int x)

l=now-1;

}int main()

} for(re int i=2;i<=2*n;i++)

if(now!=1) num[to[now]]++;

} l=1,a[1]=1;

for(re int i=2;i<=n;i++)

int up=std::sqrt(i);

int now=i;

for(re int j=1;j<=p[0]&&p[j]<=up;j++)

if(now!=1) num[to[now]]-=2;

} int now=n+1;

int up=std::sqrt(n+1);

for(re int j=1;j<=p[0]&&p[j]<=up;j++)

if(now!=1) num[to[now]]--;

for(re int i=1;i<=p[0];i++)

while(num[i]) mul(p[i]),num[i]--;

for(re int i=l;i;i--)

printf("%d",a[i]);

return 0;

}

AHOI2012 樹屋階梯

有無窮多的任意尺寸矩形,搭建乙個 n 級正階梯有多少種方案?任意大小為 i 的階梯,都可以由左上角放一塊大小為 j 的,右下角放一塊大小為 i j 1 的來構成,每一塊內部遞迴填充,對應 catalan 數 實現需要高精乘單精,高精除單精 include using namespace std co...

AHOI2012 樹屋階梯 題解(卡特蘭數)

暑假期間,小龍報名了乙個模擬野外生存作戰訓練班來鍛鍊體魄,訓練的第乙個晚上,教官就給他們出了個難題。由於地上露營濕氣重,必須選擇在高處的樹屋露營。小龍分配的樹屋建立在一顆高度為n 1尺 n為正整數 的大樹上,正當他發愁怎麼爬上去的時候,發現旁邊堆滿了一些空心四方鋼材 如圖1.1 經過觀察和測量,這些...

2822 AHOI2012 樹屋階梯

time limit 1 sec memory limit 128 mb submit 729 solved 424 submit status discuss 暑假期間,小龍報名了乙個模擬野外生存作戰訓練班來鍛鍊體魄,訓練的第 乙個晚上,教官就給他們出了個難題。由於地上露營濕氣重,必須選擇在高處的...