hdu 5573貪心構造

2021-08-02 22:58:15 字數 453 閱讀 4139

題意:給權值n和步數k,

有一顆完全二叉樹,第乙個節點是1,他的左兒子就是i x 2,右兒子是i x 2+1

然後讓你找到乙個路徑,使得通過加減恰好向下走k步之後,權值和為n

思路:貪心構造,觀察一下會發現,葉子結點所在的一層的前兩個葉子,往根部走,可以湊出來1~2*n-1所有的數,一列全是奇數,另一列全是偶數,不會存在找不到的情況。

怎麼構造呢?

先找到葉子結點所在的數,令sum=t;

然後往根部走,如果sum>n,則下乙個數取負的,累加到sum,如果sum

#include#include#include#includeusing namespace std;

int main()

}else

}for(i=j-1;i>=1;i--)}}

return 0;

}

HDU5573 二進位制思想 構造

沒有想到二進位制,以為是在樹上dp。所以也不知道怎麼dp。首先可以確定的是 滿二叉樹 最左面的可以表示所有的值。但是題目要求 不是加就是減,所以乙個減號相當於兩倍的減 每一項相加得到結果,這個數變為負的 就是算出 1 include include include include 首先可以確定的是,...

hdu5573 二叉樹找規律,二進位制相關

input t 1 t 100 n k 1 n 1e9 n 2 k 2 60 output 輸出每行輸出這一層的數,再輸出加還是減 做法 可以發現每次都往 2走時e可以得到 2 k的所有奇數,然後a將最後乙個改為2 k 1就可以在原來的基礎上得到所有偶數 如用1,2,4,8通過加減可以得到 1,1,...

HDU 5385 The path(貪心 構造)

題意 給出乙個有向有環圖,第i個點距離1號點的最短路距離記為d i 要求給每條邊賦值,使得 d 1 d x 1 d n 思路 貪心。對於乙個圖,如果我們知道每個點的d值,那麼我們可以根據d值來給邊賦值。現在的問題是求每個點的d值,可以預設每個點的d是1到n 1不等,用乙個集合儲存當前可到達的點的集合...