樹形dp 旅遊

2021-10-25 00:20:41 字數 929 閱讀 1549

一道2星的題,一開始還想成貪心找葉子,太菜了。

dp[i][0/1]表示不選/選當前結點的最大時間

還是菜,畢竟樹形dp做的太少了

#include

using

namespace std;

typedef

long

long ll;

//三年競賽一場空,不開long long見祖宗

//typedef __int128 lll;

#define print(i) cout << "debug: " << i << endl

#define close() ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)

#define mem(a, b) memset(a, b, sizeof(a))

#define pb(a) push_back(a)

#define x first

#define y second

typedef pair<

int,

int> par;

const ll mod =

1e9+7;

const

int maxn =

1e6+10;

const

int inf =

0x3f3f3f3f

;vector<

int> g[maxn]

;int dp[maxn][2

];int n, s;

void

dfs(

int u,

int fa)

}int

main()

dfs(s,-1

);cout << dp[s][1

]<< endl;

}

NC15748 旅遊 樹形DP

題目鏈結 題意 地 圖有 n個城市 n 1 條邊 地圖有n個城市,n 1條邊 地圖有n個城 市,n 1條邊第一天 住在s點 把距離 s為1的 城市遍歷 一遍 第一天住在s點,把距離s為1的城市遍歷一遍 第一天住在s 點,把距 離s為1 的城市遍 歷一遍之後每 一天選一 個地方住 遍歷距 離為1的 城...

LOJ 10159 旅遊規劃 樹形DP

題目描述 首先是求樹中最長鏈的問題,只需遍歷一遍,更新每個點距離的最大值和次大值,列舉一遍,記下答案ans。如果此時暴搜的話,找出路徑為ans的邊上的點,是可以得出答案的,但會超時。我們可以根據記下的最大值以及次大值來找路徑,找出相加為ans的點,搜尋,如果搜到的子節點最大值為父節點最大值 1,那麼...

樹形DP 樹形DP四例

是時候練一下dp了!我的題單 portkey f u,if fu,i 表示以u uu為根節點的子樹中保留i ii條樹枝的最大蘋果數 f u,i max f max f fu,i max這些題是菜,但也不能輕視啊!include using namespace std define in read i...