小白演算法練習 樹狀dp caioj 二分蘋果樹

2021-08-08 16:47:56 字數 910 閱讀 8799

提交: 183  解決: 116 [

提交][

狀態][

討論版]

【問題描述】

有一棵蘋果樹,如果樹枝有分叉,一定是分2叉(就是說沒有只有1個兒子的結點)。這棵樹共有n個結點(葉子點或者樹枝分叉點),編號為1~~n,樹根編號一定是1。我們用一根樹枝兩端連線的結點的編號來描述一根樹枝的位置。下面是一顆有4個樹枝的樹

現在這顆樹枝條太多了,需要剪枝。但是一些樹枝上長有蘋果。

給定需要保留的樹枝數量,求出最多能留住多少蘋果。

【輸入格式】

第1行2個數,n和q(1<=q<= n,1

#include#include#include#include#includeusing namespace std;

const int max=1008;

struct nodenode[max];

struct treetree[max];

vectorvec[max];

int vis[max]=;

int value[max]=;

int f[max][max]=;

void init(int f,int e,int w)

void build(int s)

else

build(vec[s][i].to);}}

}int tdp(int rt,int k)

f[rt][k]=max;

return f[rt][k];

}int main()

vis[1]=1;

build(1);

for(int i=1;i<=n;i++) f[i][0]=0;

f[1][1]=0;

cout<

}return0;

}

樹狀陣列 小白演算法學習

在解題過程中,我們有時需要維護乙個陣列的字首和s i a 1 a 2 a i 但是不難發現,如果我們修改了任意乙個a i s i s i 1 s n 都會發生變化。可以說,每次修改a i 後,調整字首和s在最壞情況下會需要o n 的時間。當n非常大時,程式會執行得非常緩慢。因此,這裡我們引入 樹狀陣...

樹狀陣列 小白

樹狀陣列 bit 是一種利用樹的2進製特徵進行檢索的樹狀結構。樹狀結構是一種奇妙的資料結構,不僅非常高效,而且 十分簡潔 比線段樹的 要短且更易理解,但是可以解決的問題也是有限的,沒有線段樹那麼廣泛 樹狀陣列就是用來 動態的求字首和 的時間複雜度在log n之內 一般來說就是兩個操作 1.單點修改 ...

小白演算法練習 數字dp模板

數字dp其實是很靈活的,所以一定不要奢求一篇文章就會遍所有數字dp的題,這一篇只能是講清楚一種情況,其他情況遇到再總結,在不斷總結中慢慢體會這個思想,以後說不定就能達到一看到題目就能靈活運用的水平。其實dp都是這樣 這一篇要說的數字dp是一道最簡單的數字dp 題目大意 多組資料,每次給定區間 n,m...