原创 Wiki OI 1004 四子連棋

題目鏈接:http://wikioi.com/problem/1004/ 算法與思路:廣搜+Hash+狀態壓縮  詳見註釋。 #include<stdio.h> #include<stdlib.h> #include<queue> #i

原创 Wiki OI 1099 字串變換

題目鏈接:http://wikioi.com/problem/1099/ 算法與思路:雙向廣搜 所謂雙向搜索指的是搜索沿兩個方向同時進行: 正向搜索:從初始結點向目標結點方向搜索; 逆向搜索:從目標結點向初始結點方向搜索; 當兩個方向的搜

原创 Wiki OI 1026 逃跑的拉爾夫

其實算不得原創,改動了下方便閱讀而已,搜索這塊實在有待加強; 附上原文鏈接http://blog.csdn.net/u010126535/article/details/8939394; 題目鏈接:http://wikioi.com/

原创 Wiki OI 1044 攔截導彈

題目鏈接:http://wikioi.com/problem/1044/ 算法與思路: 仔細理解下題意,實際上就是求最長上升子序列和最長下降子序列, 依次遍歷整個序列,每一次求出從第一個數到當前這個數的最長上升子序列, 直至遍歷到最後一個

原创 Wiki OI 1048 石子歸併

題目鏈接:http://wikioi.com/problem/1048/ 算法與思路: 儘管是比較簡單的dp,推出動態轉移方程還得卡實現,畢竟是菜鳥啊。 dp[i][j] = min(dp[i][k]  + dp[k + 1][j

原创 Wiki OI 1077 多源最短路

題目鏈接:http://wikioi.com/problem/1077/ 算法與思路:全裸floyd。 #include<stdio.h> #include<string.h> #include<algorithm> using name

原创 Wiki OI 1220 數字三角形

題目鏈接:http://wikioi.com/problem/1220/ 算法與思路:棋盤型動態規劃 狀態轉移方程DP[i][j]= {DP[i][j] + max(DP[i + 1][j] , DP[i+1][j+1])},  程序從最

原创 Wiki OI 1080 線段樹練習

題目鏈接:http://wikioi.com/problem/1080/ 算法與思路:樹狀數組,雖然這題題目是線段樹練習,但是明顯有單點更新,區間求和的特徵, 所以樹狀數組也能做,至於思路就不贅述了,不懂樹狀數組可以看我前面幾篇相關的題解

原创 prim算法模版

#include<iostream> #define INF 0xffffff #define M 1000 using namespace std; double dis[M], map[M][M]; bool flag[M]; int

原创 圖解數據結構(1)——大圈表示法、動態數組和單向鏈表

轉載自http://www.cppblog.com/guogangj/archive/2009/10/13/98476.html 《數據結構》這門課是計算機專業的核心課程,但往往卻讓人頭痛,因爲比較抽象,當然了,也許你足夠聰明,並不

原创 Poj 3067 Japan

題目鏈接:http://poj.org/problem?id=3067 題目大意:輸入K組數據,每組包含兩個整數,分別代表東西海岸的城市的編號,表示連接對應編號的城市形成的路線,輸出這K條路線的交點數,每個交點只由2條路線交叉而成; 思

原创 Poj 2352 Stars

題目鏈接:http://poj.org/problem?id=2352 題目大意:輸入n個星星的座標,數據按y升序輸入,星星的level值等於x,y都不大於該星星的星星個數,level不大於32000,要求輸出[0,n]等級的星星數;

原创 Kruskal算法模板

克魯斯卡爾(Kruskal)算法(只與邊相關) 算法描述:克魯斯卡爾算法需要對圖的邊進行訪問,所以克魯斯卡爾算法的時間複雜度只和邊又關係,可以證明其時間複雜度爲O(eloge)。 算法過程: 1.將圖各邊按照權值進行排序 2.將圖遍歷一