![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树形结构
清汤芥末面
这个作者很懒,什么都没留下…
展开
-
323. 战略游戏
树形dp,一般都是从叶子节点开始,所以一般和dfs相结合,这道题很静但,dp[i][1]表示以i为根节点并且选择i时的最少需要的士兵数,dp[i][0]表示以i为根节点并且不选择i时的最少需要的士兵数。递推公式也比较好写, dp[u][0]+=所有子节点dp[v][1]; dp[u][1]+=所有子节点min(dp[v][0],dp[v][1]);添加链接描述#include<bits/stdc++.h>#define ll long long#define x first#defi原创 2022-04-06 20:24:18 · 3687 阅读 · 0 评论 -
AcWing 285. 没有上司的舞会
添加链接描述树形dp#include<bits/stdc++.h>#define ll long long#define ios ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);using namespace std;const int M=6e3+2,N=3005;int happy[M],dp[M][2];bool st[M];vector<int>g[M];void dfs(int u){原创 2022-04-01 11:21:05 · 124 阅读 · 0 评论 -
846. 树的重心
dfs搜一下添加链接描述#include<bits/stdc++.h>#define ll long long#define ios ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);using namespace std;const int M=1e5+2,N=3005;vector<int>g[M];bool st[M];int ans=1e9,n;int dfs(int x){ st[x]=tr原创 2022-03-29 10:51:05 · 119 阅读 · 0 评论 -
树的三种遍历
前序遍历class Solution {public: void dfs(TreeNode* node,vector<int>&s) { if(node==NULL) return; s.push_back(node->val); dfs(node->left,s); dfs(node->right,s); } vector<int> preorderTrav原创 2022-02-26 16:38:04 · 242 阅读 · 0 评论