SDOI2008 山賊集團 樹上揹包 狀壓

2021-09-29 07:33:22 字數 1052 閱讀 3655

比較經典的一類樹上揹包問題套乙個子集狀壓列舉。

注意到代價的計算與所選的點的集合有關,如果我們要統計代價需要狀壓記錄點集,而資料範圍非常配合的給了p≤12

p\le12

p≤12

,直接狀壓當前子樹包含的點集。

從葉子向根dp,對於t

tt個限制,預處理出每乙個點集s

ss所產生的收益,並把路徑拆成乙個乙個點,在向根轉移的時候分開算貢獻,及將子樹的貢獻算出,只考慮當前這個點對應的點集所產生的貢獻。

f[u][s]=max(f[v][s']+f[u][(s-s')])\\ f[u][s]+=val[s]\\ \end

inline

intred()

cs int n=

110,lim=

1<<12;

inline

intlb

(int x)

int f[n]

[lim]

,val[lim]

,n,m,up;

vector<

int> g[n]

;#define it vector::iterator

inline

void

ckmax

(int

&a,int b)

void

dfs(

int u,

int fa)}}

for(ri i=

0;i<=up;

++i)f[u]

[i]+

=val[i];}

signed

main()

for(ri i=

1;i<=n;

++i)

for(ri j=

1;j<=up;

++j)

}int t=in;

while

(t--

)for

(ri i=

1;i<=up;

++i)}}

dfs(1,

0); cout<[up]

;return0;

}

學術篇 SDOI2008 山賊集團

今天一月一號.突然想安利一波我的中二的2017總結.傳送門1 codevs 傳送門2 luogu 時限5s和1s的區別 你沒看我傳送門都給的大牛分站了 現在不僅線篩.有負數的快讀都打不對了.來比較一下他們的區別?inline int gn int a 0,char c 0,int f 1 inlin...

SDOI2008 燒水問題

把總質量為1kg的水分裝在n個杯子裡,每杯水的質量均為 1 n kg,初始溫度均為0 現需要把每一杯水都燒開。我們可以對任意一杯水進行加熱。把一杯水的溫度公升高t 所需的能量為 4200 t n j,其中,j 是能量單位 焦耳 如果一旦某杯水的溫度達到100 那麼這杯水的溫度就不能再繼續公升高,此時...

SDOI2008 洞穴勘測

lct維護連通性型別的題目,主要是要搞清楚findroot函式的作用 判斷根是否相同,和並查集裡面的find 函式有異曲同工之妙,如果根相同可以認為兩個點具有連通性。先access打通一道到x的實邊,現在x是深度最大的節點。然後再splay x到根節點,因為它深度最大,這個時候它只有左子樹。所以找它...