原创 HDU_2665_劃分樹

題意:給你一個n個數的序列,有m個詢問,對於每個詢問a, b, k的意思是在區間a, b內第k大的數是什麼,劃分樹水題,貼代碼: 劃分樹講解:HERE #include <iostream> #include <cstring> #in

原创 HDU_1203_01揹包

揹包的典型思想,dp[i] i<=n 維持i時可以得到工作的最大概率,dp條件是:dp[j] = max(dp[j], 1-(1-dp[j-wei[i]])*(1-val[i])); 說來慚愧,概率論學的差,竟然沒有想到這個條件,看來A題

原创 HDU1213_並查集

並查集水題,題意:一個人請人吃飯,相互認識的朋友在一張桌子,相互認識的朋友的意思是如果A認識B,B認識C,那麼A、B、C是朋友,對於每組輸入輸出桌子的張數。貼代碼: #include <iostream> #include <cstrin

原创 HDU_2795_線段樹

題意:h*w的廣告牌,每次放一個1*a的廣告,且最先放到最上邊。線段樹的簡單題區間查找最大值的位置然後放進去,更新放進後的信息: #include <cstdio> #include <cstring> using namespace

原创 HDU1856_More is better

並查集水題,題意將直接或間接是朋友的放在一個房間,問一共需要多少房間,代碼: #include <iostream> #include <cstdio> #include <cstring> using namespace std;

原创 HDU_1421DP

經典DP問題,先將勞累度排序,相鄰相減的平方纔是最小的,然後分析:dp[i][j]爲前i物品選擇了j對最小的疲勞值,對於dp[i][j] 當i = j*2時,則dp[i-2][j-1] + a, 當i>j*2時,dp[i][j] = mi

原创 HDU1506_DP

動態規劃寫法:n個數,1--n對於每個數i判斷左右區間連續且不小於i的個數numb,即對於i,dp[i] = a[i]*numb,然後遍歷dp,找出最大值,判斷i左右區間連續且不小於i的numb時,可以開兩個數組,L和R,注意不要嵌套兩重

原创 HDU1978_DP

在每一個格子裏都有一個能量值,遊戲規則是每一步都要消耗一點能量值,只能向下或者向右走,因此對於你所處的每一個格子,對於從這個格子出發可以到達的所有格子都要累加:到達第(i, j)個格子的方法數是dp[i][j], 對於從(i, j)格子可