一道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...