原创 poj 2241 疊方塊 基本動態規劃

題意:給定n種block,每種block有無限多個,每個block有x, y, z三個屬性 要求疊起來,使得在滿足下面的長和寬嚴格大於上面的,情況下,高度最高 解法: d[i] 表示 以第i個物品爲頂能達到的最大高度 轉移方程 d[i]

原创 poj 1384 完全揹包的最小值

題意: 有一個存錢罐,不砸碎它,稱重得到裏面硬幣的重量, 硬幣分爲面值和重量,給定重量和麪值,求達到該重量的最小面值 解法: 注意幾個問題:1.完全揹包的循環方向                             2.注意要滿足恰好

原创 poj 2253 dijkstra模板的使用

需要對於模板進行修改 題意:給定N個點,求從1到2的所有路徑中最大邊長最小的解(最大值最小) 依據dijkstra單源最短路徑的貪心思想 d[i] 表示從源點s到i所滿足條件的值 那麼 d[i] = min { max(d[k], e(k

原创 poj 1018 選擇設備

從同的分組,每組“必須”選擇一個,使得總的最小帶寬 與 總費用的比值最大 一開始也沒想到怎麼DP法,但跟分組揹包問題很類似 分組揹包問題: 問題 有N件物品和一個容量爲V的揹包。第i件物品的費用是c[i],價值是w[i]。這些物品被劃分

原创 poj 2479 最大子序列和變形

題意,求序列中的兩個子序列(不相交)使得相加的和最大 第一步:計算以i結尾的最大子序列和,從左往右。計算以i開始的最大子序列,從右往左 第二步:在第一步的基礎上計算前0-i的最大子序列和O(n)掃描完成 第三步:枚舉分界點O(n)時間

原创 poj 2387 最短路徑 **dijkstra模板

真是一道神奇的題目,已經注意了重邊的問題,但是還是各種WA 後來不用優先隊列寫了dijkstra算法,AC了 然後又改用優先隊列寫,AC了。。好奇怪,爲什麼一開始各種WA呢??不明白 #include <iostream> #inclu

原创 poj 1860 2378 3259帶負邊最短路 ** bellman ford 模板

題意很明確了 採用FIFO的基本隊列進行bellman ford計算 #include <iostream> #include <vector> #include <map> #include <list> #include <set>

原创 poj 1125 股市的流言 改用dij方法 做

上一次用Floyd方法,這次採用dij方法做 更新ans的時候要連同人的小標一起,max函數用的時候要謹慎,WA了一次!! #include <iostream> #include <vector> #include <map> #in

原创 poj 2833 第k大(小)數字

這是一個很經典的問題 先採用數組存儲的方式(節省內存空間)來做,注意提交C++ 不能是G++ #include <iostream> #include <vector> #include <map> #include <list> #i

原创 poj 1050 最大子矩陣和

題意很明確了,給定矩陣求最大子矩陣使得和最大 基本方法:枚舉,枚舉x, y的上下邊界需要O(n^4)時間複雜度,計算矩陣和需要O(n^2)的複雜度,總共要O(n^6)無法承受 改進:           採用二維前綴和(類似一維),su

原创 poj 2299 求逆序對

經典題目: 給定一個序列,求其中的逆序對 在歸併排序(merge sort)的基礎上統計,時間複雜度O(nlogn) 注意使用long long #include <iostream> #include <vector> #includ

原创 poj 動態規劃題目列表

列表一:經典題目題號:容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1191,1208, 1276, 1322, 1414, 1456, 14

原创 poj 1276 多重揹包問題

題意: 給出N種貨幣,每種貨幣有a[i]張, 對於給定的錢數X,求出貨幣可以拼出的最接近於並且小於等於X的數值 解法: 把錢的上限X看作體積,並且每種貨幣的面值既是揹包問題裏面的“體積”也是“價值” 相對於0-1揹包問題,該問題屬於多重

原创 poj 1163 三角形和

昨天的騰訊馬拉松複賽2013-03-31第三場做的不好,第一個簽到題跟這個題完全一樣的思路,也浪費了很多時間,哎。。。。 慢慢總結吧,多學習多積累 記憶化搜索的動態規劃,初始狀態在底部。。。 #include <iostream> #i

原创 uva 11995 猜測數據結構 入門與STL

題意: 給定輸入和輸出,猜測這是哪一種數據結構 指令1表示放入,2表示取出 #include <iostream> #include <vector> #include <map> #include <list> #include <s