hdu 5325 Crazy Bobo(树形dp)
来源:互联网 发布:淘宝禁止好评返现2016 编辑:程序博客网 时间:2024/04/30 23:52
题目链接:hdu 5325 Crazy Bobo
对于每个点,C[u]表示以u为中点(即w[u]为最小值)的满足子树,点的个数最多个数。每次一个点先优处理处C[u]。再递归向下处理。
#pragma comment(linker, "/STACK:102400000,102400000")#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;const int maxn = 500005;int N, W[maxn], C[maxn], ans;vector<int> G[maxn];void init () {ans = 0;memset(C, 0, sizeof(C));for (int i = 1; i <= N; i++) {scanf("%d", &W[i]);G[i].clear();}int u, v;for (int i = 1; i < N; i++) {scanf("%d%d", &u, &v);G[u].push_back(v);G[v].push_back(u);}}void dfs (int u, int f, int d) {int& ret = C[u];ret = d + 1;for (int i = 0; i < G[u].size(); i++) {int v = G[u][i];if (v == f)continue;if (W[u] > W[v])continue;dfs(v, u, 0);C[u] += C[v];}for (int i = 0; i < G[u].size(); i++) {int v = G[u][i];if (v == f)continue;if (W[u] < W[v])continue;dfs(v, u, C[u]);}}int main () {while (scanf("%d", &N) == 1) {init();dfs(1, 0, 0);int ans = 0;for (int i = 1; i <= N; i++) {ans = max(ans, C[i]);}printf("%d\n", ans);}return 0;}
0 0
- hdu 5325 Crazy Bobo(树形dp)
- 多校第三场 1010 hdu 5325 Crazy Bobo(拓扑排序+树形dp)
- HDOJ 5325 Crazy Bobo 树形DP
- HDU 5325 Crazy Bobo
- hdu 5325 Crazy Bobo
- HDU 5325 Crazy Bobo
- hdu 5325 Crazy Bobo
- HDU 5325 Crazy Bobo
- HDU 5325 CRAZY BOBO 排序
- HDU 5325 - Crazy Bobo(DFS)
- hdu 5325 Crazy Bobo dfs
- HDU 5325 Crazy Bobo(深搜)
- HDU 5325 Crazy Bobo(思路+dfs 记忆化)
- 树上记忆化搜索(Crazy Bobo,HDU 5325)
- hdu 5325 Crazy Bobo 乱搞+搜索
- hdu 5325 Crazy Bobo 多校1010
- hdu 5325 Crazy Bobo 拓扑排序
- Hdu 5325 Crazy Bobo (拓扑排序)
- HDU 5316 Magician(线段树区间合并入门)
- hdu 5319 Painter(15多校第三场1004)
- hdu 5318 The Goddess Of The Moon 矩阵快速幂+dp
- 2. Java面向对象之泛型-构造方法中使用
- 记录JAVA学习的第一天
- hdu 5325 Crazy Bobo(树形dp)
- jdk配置
- 喷水装置(一)
- JAVA数据类型
- 多态
- 杭电 3785 寻找大富翁
- POJ 1088 滑雪
- Eclipse 一直提示 loading descriptor for 的解决方法
- 2015多校第一场1003 hdu 5290 Bombing plan