樹形dp 訪問美術館

2021-08-29 08:04:45 字數 738 閱讀 4362

1)讀入給了編號並給予父子關係 (父子關係已給出) 處理:同存圖

2)將陣列轉化為乙個樹 父子關係體現在其編號上(編號的關係->父子關係)典型:線段樹,堆(lson:2*x rson: 2*x+1)

void dfs(int x)

}

3)直接搞dfs序,一邊深搜一邊編號

void find()

}

then是完整**

方法1:dfs序

由於輸入的訪問次序與dfs序相同,所以直接做一遍dfs找出lson,rson即可,無需額外儲存父子關係

#include #include #include using namespace std;

const int maxn=1005;

vectorv[maxn];

int f[maxn][maxn];

int cnt=0;

int n;

void find()

} }else

}}int main()

a[maxn];

int f[maxn][maxn];

int cnt;node k;

void dfs(int x)

}int find(int x,int cost)

return f[x][cost];

}int main()

P1270 「訪問」美術館

p1270 訪問 美術館 一開始以為只是一棵普通樹,後來才發現題目中寫了每個走廊要麼分叉為兩條走廊,要麼通向乙個展覽室,是一棵二叉樹,可以直接用陣列表示。輸入是按照dfs序給出的,可以直接按照類似於線段樹bulid來建立這棵二叉樹,其中藏畫數不為0的是葉子結點,是遞迴建樹的終點。小偷是要偷畫,最後還...

P1270 「訪問」美術館

一道樹形dp啦 其實我是做過這道題的加強版後才做的這道題 不過先由淺入深,先發這個 首先,我定義 f u i 為在第 u 個點上,給它時間為 i 是能獲取的最大價值。有乙個需要注意,如果說這是乙個展廳,設給這個點的時間為 t 那麼實際能偷畫的時間只有 t 雙倍邊權。這也導致了如果這個點是乙個分支,那...

luogu P1270 訪問 美術館

傳送門 比較奇怪的樹形揹包 首先需要處理讀入的問題 這題史詩遞迴讀入 然後遞迴讀入就不用建圖 這題特點是只有葉子有價值 所以揹包就不太有用 坑點就是這個人進去還得出來.而且不能把時間都用完 導致75 time cost 35min code 1 include2 include3 include4 ...