uva oj 111、674、562、11137、10534、10130解題報告
111 - DP LCS - degree1
2.解題思路:利用動態規劃的LCS演算法(演算法連結),特別注意要看清題目,第一行輸入為事件“envent”的數目,第二行為正確的事件"envent"的順序,第三行為學生的輸入
3.輸入輸出:sample的input、output就可以
4.程式碼
674 - DP 硬幣- degree1
2.解題思路:動態規劃的硬幣問題(連結)。
3.輸入輸出:sample的input、output就可以
4.程式碼:
562 - DP 非典型揹包- degree2
2.解題思路:這道題是一道非典型的DP題,我們不能直接利用DP得出答案,而是利用DP產生一箇中間的結果,然後利用這個中間結果計算題目答案。
我們用DP思想首先產生一個judge陣列,陣列有0與1兩個值,judge[i] = 0表示我們無法劃分出i這個值,judge[i] = 1則相反表示利用一直的硬幣可以劃分出這個值。得到了judge陣列後我們在對陣列中所有值為1的數計算兩堆硬幣的差值,記錄下這個差值,輸出。
3.輸入輸出:sample
4.程式碼:
11137 - DP 硬幣 - degree-1
2.解題思路:典型動態規劃硬幣問題(連結),要特別注意迴圈接硬幣問題時的順序~見動態規劃硬幣演算法~
3.輸入輸出:sample
4.程式碼
10534 - DP LIS - degree -2
2.解題思路:這道題主要是利用了LIS演算法(LIS演算法連結),要特別注意o(n^2)與o(nlogn)兩種演算法的不同實現,這道題用o(n^2)的方法
是超時的,只能使用o(nlogn)的方法。、
演算法的思路是找到目標序列的中點,以這個中點為起點與中點的LIS是一樣的。我們從input序列的中點每次分別向左與向右同時擴充套件一個點,計算LIS並且比較,如果相等並且超過以後點能生成的最大值則為答案。
3.輸入輸出:sample
4.程式碼:
10130 - DP 0-1揹包問題 - degree -2
2.解題思路:這是一道典型的0-1揹包問題,不過對於家庭裡的每個成員都需要計算一次,然後將每個成員計算出的最大值累加輸出。
3.輸入輸出:sample
4.程式碼: