NUISTOJ P1285 達朗貝爾的台階

2021-10-05 22:29:10 字數 1620 閱讀 9898

p1285 達朗貝爾的台階

達朗貝爾是法國數學家,哲學家。當牛頓和萊布尼茲一直在微積分的的基本問題上犯錯誤時,羅爾指著牛頓的鼻子說:「你的微積分就是小的謬誤加起來的大謬誤」。牛頓啞口無言,這時候達朗貝爾站了出來:「我雖然不能解釋為什麼微積分是正確的,但是只有向前進我們才能看見希望!」 這句話激勵了一代又一代的人。達朗貝爾小時候被母親拋棄在教堂附近的乙個台階上,被一位玻璃匠收養,後來這個教堂的名字就成了他的教名 。當他出名後他的母親回來找他,達朗貝爾對他的母親說:「you are my stepmother」 一語雙關諷刺了他勢力的母親

達朗貝爾留下的是乙個關於台階的問題。

如果我每一步只能邁上 1 個或者 2 個台階。先邁左腳,然後左右交替,最後一步邁右腳,也就是說一共要走偶數步,那麼邁上 n 級台階,有多少種不同的上法呢?

第一行乙個整數 n,表示台階的數量。

結果佔一行,表示用偶數步,邁上 n 級台階不同的方案數目,測試資料保證結果不超出 int 範圍

1044

這題第一眼就是直接寫個遞迴就能搞出來了。但是會tle

附上簡單遞迴**

#include

using

namespace std;

void

dfs(

int jie,

int bu)

;int kind;

intmain

(void

)return0;

}void

dfs(

int jie,

int bu)

}else

}

tle了一次之後,我不禁陷入對人生的思考。

只能用排列組合來解了。

前置知識:

偶數 + 偶數 = 偶數

奇數 + 奇數 = 奇數

偶數x奇數=奇數

奇數x奇數=奇數

其實我們可以把這個問題轉換為有一堆座位,然後在裡面放兩種球,一種球佔乙個空位,一種佔兩個空位。現在問有多少種放偶數個球放滿的方案。

這裡需要知道,我們要選佔兩個空位的來放進去,然後剩下的空位就是新增1的方案。(如果選1的話,如果1和1之間只空開一位,2就放不進去了,會造成**煩。)

那麼可以知道。如果空位是奇數,那麼偶數個1+偶數個2方案(偶數加偶數還是偶數)

如果空位是偶數,那麼偶數個1+偶數個2(偶數加偶數還是偶數)

這裡還要用到排列組合的遞推公式,這個好推的,自己推。

上**(之前用int直接wa了兩發,改用long long 就過了。。。)

#include

using

namespace std;

long

long n;

long

longjc(

long

long i,

long

long n)

return ans;

}int

main

(void

)long

long ans =0;

if(n%2==

0)}else

} cout << ans << endl;

}return0;

}

訓練日誌12 (8 5)

一夜回到解放前。三道題中最水的題,a 了十幾個,我 wa 0。不得不說,實力至此。將同行同列操作合併,歸成乙個操作,然後合併成乙個串。這需要感性的思考一下。假設我們現在讓矩陣按列分成乙個含 m 個元素的串,同一行中的每一位都乘上了乙個相同元素,因為一行中原本元素與元素之間就是成等差數列的關係,乘上相...

hdu1285(拓撲排序)

拓撲排序簡單來說就是把乙個圖的所有節點排序,使得每一條有向邊 u,v 對應的u都排在v的前面。拓撲排序最大的用途就是判斷乙個有向圖是否有環,當然判斷還有一種方法就是floyd演算法。如果用鄰接表的話拓撲排序的時間複雜度是o n e 鄰接矩陣是o n 2 n表示頂點數,e表示邊數,floyd時間複雜度...

hdu 1285(拓撲排序)

題意 給各個隊間的勝負關係,讓排名次,名詞相同按從小到大排。解析 拓撲排序是應用於有向無迴路圖 direct acyclic graph,簡稱dag 上的一種排序方式,對乙個有向無迴路圖進行拓撲排序後,所有的頂點形成乙個序列,對所有邊 u,v 滿足u 在v 的前面。該序列說明了頂點表示的事件或狀態發...