NC15748 旅遊 樹形DP

2021-10-06 17:09:47 字數 2948 閱讀 8911

題目鏈結

題意:

地 圖有

n個城市

,n−1

條邊

地圖有n個城市,n-1條邊

地圖有n個城

市,n−

1條邊第一天

住在s點

,把距離

s為1的

城市遍歷

一遍

第一天住在s點,把距離s為1的城市遍歷一遍

第一天住在s

點,把距

離s為1

的城市遍

歷一遍之後每

一天選一

個地方住

,遍歷距

離為1的

城市

之後每一天選乙個地方住,遍歷距離為1的城市

之後每一天選

乙個地方

住,遍歷

距離為1

的城市但是每

次遍歷過

的城市不

再去

住但是每次遍歷過的城市不再去住

但是每次遍歷

過的城市

不再去住

問 最多

能瀏覽幾

天問最多能瀏覽幾天

問最多能瀏覽

幾天題解:

n 個點

,n−1

條邊很明

顯這是一

棵樹

n個點,n-1條邊很明顯這是一棵樹

n個點,n−

1條邊很

明顯這是

一棵樹由於每

個點是否

能住取決

於他距離

為1的點

是否住過

由於每個點是否能住取決於他距離為1的點是否住過

由於每個點是

否能住取

決於他距

離為1的

點是否住過所以

就可以考

慮樹形d

p所以就可以考慮樹形dp

所以就可以考

慮樹形dp由於

第一天住

的是s,

所以以s

為根節點

由於第一天住的是s,所以以s為根節點

由於第一天住

的是s,

所以以s

為根節點

對 點u

如果住宿

最多可以

留幾天,

不住宿最

多可以留

幾天

對點u如果住宿最多可以留幾天,不住宿最多可以留幾天

對點u如果住

宿最多可

以留幾天

,不住宿

最多可以

留幾天由於是

樹形dp

,所以從

下往上看

由於是樹形dp,所以從下往上看

由於是樹形d

p,所以

從下往上看如果

選擇u住

宿,那麼

它的子節

點一定不

能住

宿如果選擇u住宿,那麼它的子節點一定不能住宿

如果選擇u住

宿,那麼

它的子節

點一定不

能住宿如果u

不住宿,

它的子節

點可以任

意選擇住

宿或者不

住宿,選

擇最大值

如果u不住宿,它的子節點可以任意選擇住宿或者不住宿,選擇最大值

如果u不住宿

,它的子

節點可以

任意選擇

住宿或者

不住宿,

選擇最大值所以

最終推到

根節點s

,取出s

住宿的情

況的dp

值所以最終推到根節點s,取出s住宿的情況的dp值

所以最終推到

根節點s

,取出s

住宿的情

況的dp

ac**

/*

author:zzugzx

lang:c++

blog:blog.csdn.net/qq_43756519

*/#include

using

namespace std;

#define fi first

#define se second

#define pb push_back

#define mp make_pair

#define all(x) (x).begin(),(x).end()

#define endl '\n'

typedef

long

long ll;

typedef pair<

int,

int> pii;

typedef pair pll;

const

int mod=

1e9+7;

//const int mod=998244353;

const

double eps =

1e-10

;const

double pi=

acos(-

1.0)

;const

int maxn=

1e6+10;

const ll inf=

0x3f3f3f3f

;const

int dir[4]

[2]=

,,,}

;int dp[maxn][2

];vector<

int> g[maxn]

;void

dfs(

int u,

int fa)

}int

main()

dfs(s,0)

; cout<]

}

旅遊規劃 樹的直徑

w市的交通規劃出現了重大問題,市 下決心在全市的各大交通路口安排交通疏導員來疏導密集的車流。但由於人員不足,w市市長決定只在最需要安排人員的路口安放人員。具體說來,w市的交通網路十分簡單,它包括n個交叉路口和n 1條街道,任意一條街道連線兩個交叉路口,並且任意兩個交叉路口之間都存在一條路徑互相連線。...

NC16649 校門外的樹 NC24636 值周

題目鏈結 校門外的樹 值周 資料加強版,加到了1e8 題意 從 0 l 中選取m個區間 l r 刪除 l r 中的元素,計算最後剩餘多少個元素 思路 字首和 差分標記端點 o n includeusing namespace std int a int 1e8 5 int l,r int main ...

NC201400 樹學題解

這道題又是一道換根dp板子題,結構與 accumulation degree 這道題基本一致,唯一不同的就是轉移了 不過轉移的時候,因為方程的原因不需要特殊考慮葉節點 我們先套路的設 dp i 表示以 i 為根的子樹中,所有點的深度和,現在,我們來想想轉移。我們發現,如果我們要從 i 的乙個兒子v轉...