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 的前面。該序列說明了頂點表示的事件或狀態發...