傳送門
比較奇怪的樹形揹包
首先需要處理讀入的問題 這題史詩遞迴讀入
然後遞迴讀入就不用建圖
這題特點是只有葉子有價值 所以揹包就不太有用
坑點就是這個人進去還得出來...
而且不能把時間都用完(導致75)
time cost: 35min
code:
1 #include2 #include3 #include4 #include5 #include6view code#define ms(a,b) memset(a,b,sizeof a)
7#define rep(i,a,n) for(int i = a;i <= n;i++)
8#define per(i,n,a) for(int i = n;i >= a;i--)
9#define inf 2147483647
10using
namespace
std;
11 typedef long
long
ll;12 typedef double
d;13
#define eps 1e-8
14ll read()
21while(c >= '
0' && c <= '9'
) 25
return
as *fu;26}
27//
head
28const
int n = 1005;29
intn,v;
30struct
node p[n<<4
];33
intdp[n][n];
3435
#define ls x<<1
36#define rs x<<1|1
37void input(int
x) 41
42int dfs(int x,int
tot)
5253
intmain()
P1270 「訪問」美術館
p1270 訪問 美術館 一開始以為只是一棵普通樹,後來才發現題目中寫了每個走廊要麼分叉為兩條走廊,要麼通向乙個展覽室,是一棵二叉樹,可以直接用陣列表示。輸入是按照dfs序給出的,可以直接按照類似於線段樹bulid來建立這棵二叉樹,其中藏畫數不為0的是葉子結點,是遞迴建樹的終點。小偷是要偷畫,最後還...
P1270 「訪問」美術館
一道樹形dp啦 其實我是做過這道題的加強版後才做的這道題 不過先由淺入深,先發這個 首先,我定義 f u i 為在第 u 個點上,給它時間為 i 是能獲取的最大價值。有乙個需要注意,如果說這是乙個展廳,設給這個點的時間為 t 那麼實際能偷畫的時間只有 t 雙倍邊權。這也導致了如果這個點是乙個分支,那...
P1270 「訪問」美術館
題意 給出一顆樹形圖,每一條邊都有一定權值,葉子節點裡面有若干副畫 現在有乙個小偷要進去偷畫,每一條邊的權值就是走的時間,偷畫需要5秒 給出警察到來時間,問最多能偷多少副畫 思路 這是一道樹形dp 我們遍歷每個節點,從根節點dfs到葉子節點,那麼如何進行狀態轉移呢 我們用乙個dp i j 表示在i節...