這個題是乙個卡特蘭數的裸題,為什麼呢?因為可以通過劃分來匯出遞推式從而判斷是卡特蘭數,然後直接上公式就行了。卡特蘭數的公式見鏈結。
**實現不難,就是乙個高精乘|除低精。
題幹:
輸入格式:
乙個正整數n(1<=n<=500),表示階梯的高度。
輸出格式:
乙個正整數,表示搭建方法的個數。(注:搭建方法的個數可能很大)
輸入樣例#1:複製
3輸出樣例#1:複製
540%的資料:1<=n<=20
80%的資料:1<=n<=300
100%的資料:1<=n<=500
**:
#include#include#include
#include
#include
#include
#include
using
namespace
std;
#define duke(i,a,n) for(int i = a;i <= n;i++)
#define lv(i,a,n) for(int i = a;i >= n;i--)
#define clean(a) memset(a,0,sizeof(a))
const
int inf = 1
<< 30
;typedef
long
long
ll;typedef
double
db;template
void read(t &x)
template
void
write(t x)
struct
node
;node init()
void mu(node &m,int
b) duke(i,
1,m.l)
}//int tot = 1;
while(m.a[m.l] > 10
)
}node dev(node m,
intb)
h.l =m.l;
while(h.a[h.l] == 0
) h.l--;
returnh;}
void
output(node m)
return;}
intn;
intmain()
duke(i,
1,n)
//l = dev(l,6);
output(l);
return0;
}
AHOI2012 樹屋階梯
卡特蘭數!至於為什麼是卡特蘭數,就稍微說那麼一兩句吧 對於乙個高度為 i 的階梯,我們可以在左上角填乙個高度為 k 的階梯,右下角填乙個高度為 i 1 k 的階梯剩下的我們用乙個大的長方形填上就可以啦 比如這個樣子 之後還需要高精,但是為了簡單好寫,這裡可以分解質因數,之後就變成另乙個單精度乘高精了...
AHOI2012 樹屋階梯
有無窮多的任意尺寸矩形,搭建乙個 n 級正階梯有多少種方案?任意大小為 i 的階梯,都可以由左上角放一塊大小為 j 的,右下角放一塊大小為 i j 1 的來構成,每一塊內部遞迴填充,對應 catalan 數 實現需要高精乘單精,高精除單精 include using namespace std co...
2822 AHOI2012 樹屋階梯
time limit 1 sec memory limit 128 mb submit 729 solved 424 submit status discuss 暑假期間,小龍報名了乙個模擬野外生存作戰訓練班來鍛鍊體魄,訓練的第 乙個晚上,教官就給他們出了個難題。由於地上露營濕氣重,必須選擇在高處的...