慢慢也發現自己的確跟不上節奏了。明明acm該是個狠好的選擇。可是時間至此時此刻,不能說沒有機會 只能說甚微了。為了自己的保研大業,在各種oj上亂刷幾題,也算是對自己的安慰。
題目:
題意:給乙個空棧和n步操作,保證每一步操作合法並且最終結果保證粘依舊為空。
思路:奇數次操作一定輸出0,然後dfs輸出偶數次操作前幾項n1
2345
6a24
681012
c(n)12
51442132
發現是個卡特蘭數。
卡特蘭數遞推公式:h(0)=h(1)=1 , h(n) = [(4*n-2)/n+1]*h(n-1) (n≥2)
同餘定理:(a*b)%p=(a%p * b%p)%p (a/b)%p=(a%p * 1/b %p)%p
費馬小定理:a^(p-1) % p = 1 (p是質數)
根據費馬小定理得:1/a %p = a^(p-2) % p 其中 a^(p-2) %p 利用快速冪取餘的辦法求得。
快速冪取餘(a^b %p):把b拆分成2進製表示從右向左一位一位計算。當第n項為1時令前n項的結果乘以a^(2^(n-1)),並注意實時取餘。
#include #include #include #include using namespace std;
#define mod 1000000007
typedef long long ll;
ll h[505];
ll exp_mod(ll a)
return res;
}void init()
int main()
return 0;
}
卡特蘭數例題 出入棧
題目描述 給定乙個初始為空的棧,和n個操作組成的操作序列,每個操作只可能是出棧或者入棧。要求在操作序列的執行過程中不會出現非法的操作,即不會在空棧時執行出棧操作,同時保證當操作序列完成後,棧恰好為乙個空棧。求符合條件的操作序列種類。例如,4個操作組成的操作序列符合條件的如下 入棧,出棧,入棧,出棧 ...
九度OJ 1547 出入棧 動態規劃
題目描述 給定乙個初始為空的棧,和n個操作組成的操作序列,每個操作只可能是出棧或者入棧。要求在操作序列的執行過程中不會出現非法的操作,即不會在空棧時執行出棧操作,同時保證當操作序列完成後,棧恰好為乙個空棧。求符合條件的操作序列種類。例如,4個操作組成的操作序列符合條件的如下 入棧,出棧,入棧,出棧 ...
九度 1547 出入棧 二維DP
題目描述 思路 1.dp i j 表示前 i 個操作中有 j 個入棧操作的方案數 2.dp i j dp i 1 j 1 dp i 1 j 其中 j i 2.3.為了方便起見,非法的狀態為 0,比如 dp 3 1 0 source.cpp created on 2014 4 4 author vin...