--- id: dp-trees title: "Dynamic Programming on Trees" author: Michael Cao prerequisites: - Silver - Depth First Search - Gold - Introduction to Dynamic Programming description: What it sounds like. --- ## Tutorial * [DP on Trees (Codeforces)](https://codeforces.com/blog/entry/20935) * [NOI PDF (Philippines)](https://noi.ph/training/weekly/week5.pdf) ## Problems Don't just dive into trying to figure out a DP state and transitions -- make some observations if you don't see any obvious DP solution! - USACO - [Gold - Barn Painting](http://www.usaco.org/index.php?page=viewproblem2&cpid=766) - Similar to Independent Set - [Gold - Delegation](http://usaco.org/index.php?page=viewproblem2&cpid=1019) - Pretty much a greedy problem. - [Plat - Delegation](http://www.usaco.org/index.php?page=viewproblem2&cpid=1020) - Binary search on answer! - Other - [CSES - Tree Matching](https://cses.fi/problemset/task/1130) - [Subtree](https://atcoder.jp/contests/dp/tasks/dp_v) - [Independent Set](https://atcoder.jp/contests/dp/tasks/dp_p) - [BOI - Cat In A Tree](https://cses.fi/file/a904421da451fbe1b60f96a27256832a011825dfd097ee40184d15878e837018/) - Observations first. - [COCI - Dzumbus](https://oj.uz/problem/view/COCI19_dzumbus) - Solve child subtree by subtree. Runtime may be faster than you think. - [Ostap and Tree](https://codeforces.com/problemset/problem/735/E)