提交: 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...