原创 poj1088 dp 記憶化搜索 (入門好題)

題目意思很簡單,一開始我直接DFS深搜,超時果果的,看了題解以後,學習了記憶化搜索,就是記錄下已經求出的當前結點的最大值,在之後訪問到這個節點時,就能直接調用結果,減少重複計算。是一道好題。 以下爲代碼: #include <cstdio

原创 hdu1010 dfs+剪枝 (挺機智的題。。)

一道DFS+剪枝題,題目意思是問能否在規定時間到達出口(路徑不能重複),一開始我以爲在t時間內到達就行了。。果斷寫了一個BFS然後一直WA,一搜題解才恍然大悟。。。一個簡單的DFS,剪枝部分很機智,根據起點終點還有規定時間的奇偶性質可以剪

原创 zoj1025 dp(呃。。)

這道題放在DP訓練題組裏,但是我用的貪心做出來的 題目大意:問最少能用多少組非遞減數列覆蓋所給數列。。網上看的大多數做法和我差不多,排序好以後進行搜索與標記,然後就AC了。。並不知道在哪裏用DP。。 以下是代碼: #include <cs

原创 zoj1093 dp入門

今天終於開始刷dp的題目了!題目大意:給出n種長方體和各自邊長,每種長方體選擇數量沒有限制,放在上面的長方體要小於下面的長方體,問能夠放多高。 做法:每個長方體有三種擺放方式,把三種方式各看成一種長方體,把它們先按兩條邊長由大到小排序,然

原创 poj1321 簡單dfs

一道水題,需要注意的是,放置棋子時,可以跳過此行進入下一行。 以下是代碼: #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> using

原创 poj2251 三維bfs

挺簡單的一道題,直接往6個方向BFS就行了,通過這道題明白了:BFS過程中,把節點壓入隊列時就要標記這個節點,而不能節點取出後再標記,這樣避免了很多重複的BFS。一開始交的時候一直WA。。結果發現是因爲memset裏面寫錯了。。汗死。。

原创 poj1011 dfs 剪枝

這道題與poj2362類似,對剪枝的要求更多了。題目大意爲原本有許多等長的棍子,被切碎了,現在要求出原來棍子最小的可能長度。 依舊是將棍子按照從大到小排序,減少遞歸次數。 因爲所有棍子都要用到,所以原來棍子長度一定>=最長的一根棍子。求

原创 poj2488 DFS基礎

DFS基礎題,題目大意是給出棋盤大小,問馬能否走遍所有的格子。 需要注意的是,題目要求按字典序輸出路徑,所以遍歷時,要按照先從上到下再由左至右的順序。這裏開始把往上和往下的順序搞反了。。一直WA。。還是太年輕。代碼有些細節寫得醜,大概就是

原创 POJ3620

今天開始,每天學一些數據結構和算法,然後把暑假集訓的作業題都刷一遍,跳過模擬和貪心,從搜索開始。 poj3620 水題一道,dfs求連通塊: #include <cstdio> #include <cmath> #include <cst

原创 poj2362 dfs 剪枝 比水題難的題

這道題tel了一晚上。。看了題解後。。終於A掉了,題目大意是:給出若干根各種長度的棍子,問它們能否拼接成正方形(每根都要用上)。 首先求出棍子長度的和sum。 剪枝1:sum%4!=0 則答案一定爲no。 若sum%4==0,則棍子要組合

原创 poj3278 BFS基礎

題目大意爲:給出農民座標和奶牛座標,可對農民座標進行三種操作:+1 , -1, *2. 奶牛座標不變,問農民到達奶牛座標最少操作數。 基礎的BFS題 #include <cstdio> #include <cmath> #include

原创 ACM我來了

            作爲一名沒什麼基礎的新生,I`m coming!  希望堅持下去

原创 zoj1366 Cash Machine (多重揹包基礎)

    一個裸的多重揹包,把物品按二的冪分解,然後就轉換成了01揹包問題來求解,具體操作可參考《揹包問題九講2.0》。     以下是代碼: #include <cstdio> #include <cstring> #include <c

原创 CF621C (求概率)

#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; double f[123456]; i

原创 hdu2614 DFS

#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <cstring> #include <queue> using n