洛谷luogu P3360 偷天換日(樹形DP)

2021-09-17 01:40:31 字數 822 閱讀 1938

給乙個有根樹,有邊權,葉子節點有畫可以偷,偷畫和經過邊需要時間,給定n時間,最多可以偷多少價值的畫。

這奇怪的資料格式真是給跪了,葉子節點可以揹包,非葉子節點怎麼辦呢?暴力列舉!

#include

#include

#include

#include

#include

#include

#include

#define forn(i, n) for (int i = 0; i < (int)(n); ++i)

#define for1(i, n) for (int i = 1; i <= (int)(n); ++i)

#define pb push_back

using namespace std;

typedef

long

long ll;

const

int n=

1000+5

;struct nodetree[n]

;int cnt=0;

intnew

(int w,

int x)

int dp[

300+5]

[30+5

][600+5]

;int

build()

// cout<}

// cout<}

else

if(x==0)

return r;

}void

dfs(

int u)}}

intmain()

洛谷 3373 線段樹

傳送門 思路 關鍵在於乘與加的先後計算關係,x y k x k y k,從這裡可以看出來,把加法轉化為乘法計算,取消了 與 先後順序 pushdown時,即為乘法標記 原有資料 加法標記 長度。注意點 這個題資料範圍取long long 讀入的k也是long long,傳入函式時用long long...

洛谷 1198 線段樹

線段樹的單點更新 區間查詢,典型的求區間最大值。如下 1 include2 using namespace std 3 typedef unsigned int ui 4 typedef long long ll 5 typedef unsigned long long ull 6 define p...

洛谷1268樹的重量(樹)

樹可以用來表示物種之間的進化關係。一棵 進化樹 是乙個帶邊權的樹,其葉節點表示乙個物種,兩個葉節點之間的距離表示兩個物種的差異。現在,乙個重要的問題是,根據物種之間的距離,重構相應的 進化樹 令n 用乙個n上的矩陣m來定義樹t。其中,矩陣m滿足 對於任意的i,j,k,有m i,j m j,k m i...