CJOJ 2171 火车站开饭店(树型动态规划)

Description

政府邀请了你在火车站开饭店,但不允许同时在两个相连的火车站开。任意两个火车站有且只有一条路径,每个火车站最多有 50 个和它相连接的火车站。
告诉你每个火车站的利润,问你可以获得的最大利润为多少?
例如下图是火车站网络:

最佳投资方案是 1 , 2 , 5 , 6 这 4 个火车站开饭店可以获得的利润为 90.

Input

第一行输入整数 N(<=100000), 表示有 N 个火车站,分别用 1,2,……..,N 来编号。
接下来 N 行,每行一个整数表示每个站点的利润,接下来 N-1 行描述火车站网络,每行两个整数,表示相连接的两个站点。

Output

输出一个整数表示可以获得的最大利润。

Sample Input

6
10
20
25
40
30
30
4 5
4 6
3 4
1 3
2 3

Sample Output

90

Http

CJOJ:http://oj.changjun.com.cn/problem/detail/pid/2171

Source

树型动态规划

解决思路

这道题与POJ2342真是有异曲同工之妙,这里不再过多叙述,请参考这里

代码

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;const int maxN=100001;
const int inf=2147483647;int n;
int Value[maxN];
vector<int> E[maxN];
int F[maxN][5]={0};
bool vis[maxN]={0};void dfs(int u);int main()
{int u,v;cin>>n;for (int i=1;i<=n;i++)scanf("%d",&Value[i]);for (int i=1;i<n;i++){scanf("%d%d",&u,&v);E[u].push_back(v);E[v].push_back(u);}dfs(1);cout<<max(F[1][1],F[1][0])<<endl;return 0;
}void dfs(int u)
{vis[u]=1;F[u][1]=Value[u];F[u][0]=0;for (int i=0;i<E[u].size();i++){int v=E[u][i];if (vis[v]==0){dfs(v);F[u][1]+=F[v][0];F[u][0]+=max(F[v][1],F[v][0]);}}return;
}

转载于:https://www.cnblogs.com/SYCstudio/p/7138199.html

CJOJ 2171 火车站开饭店(树型动态规划)相关推荐

  1. 【基于贪心的树型动态规划】【NOI2007】追捕盗贼

    问题描述 魔法国度 Magic Land 里最近出现了一个大盗 Frank,他在 Magic Land 四处作案,专门窃取政府机关的机密文件(因而有人怀疑 Frank 是敌国派来的间谍). 为了捉住 ...

  2. POJ 2152 fire / SCU 2977 fire(树型动态规划)

    POJ 2152 fire / SCU 2977 fire(树型动态规划) Description Country Z has N cities, which are numbered from 1 ...

  3. 【算法•日更•第九期】树型动态规划详解:二叉苹果树

    ▎前置技能:动态规划&树 树型动态规划一听就知道是在树结构上使用的动态规划,那么不会树结构和动态规划怎么行?戳这里了解动态规划和树. ▎什么是树型动态规划? ☞『定义』 树形动态规划问题可以分 ...

  4. 【LeetCode笔记】337. 打家劫舍III(Java、树型动态规划)

    文章目录 题目描述 思路 & 代码 更新版 题目描述 这年头当个小偷,都得会 dp 和二叉树了 和前面的 I & II 有点不同,这次直接换了数据结构,写树来了.(之后不会是图吧) 很 ...

  5. 提高篇 第五部分 动态规划 第2章 树型动态规划

    例1 二叉苹果树 信息学奥赛一本通(C++版)在线评测系统 二叉苹果树_哔哩哔哩_bilibili 洛谷P2015 二叉苹果树 题目讲解 洛谷P2015 二叉苹果树 题目讲解_哔哩哔哩_bilibil ...

  6. 皇宫看守 树型动态规划

    题目大意 太平王世子事件后,陆小凤成了皇上特聘的御前一品侍卫.    皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步一哨,每个宫殿都要有人 ...

  7. php创建无限级树型菜单以及三级联动菜单

    http://www.php.cn/php-weizijiaocheng-373500.html 这篇文章主要介绍了php创建无限级树型菜单 ,主要使用的是递归函数,感兴趣的小伙伴们可以参考一下 写递 ...

  8. php实现无限级树型菜单(函数递归算法)

    2019独角兽企业重金招聘Python工程师标准>>> 大概步骤如下: 首先到数据库取数据,放到一个数组, 然后把数据转化为一个树型状的数组, 最后把这个树型状的数组转为html代码 ...

  9. POJ 2152 树型DP //很棒的题

    题意:Z国有n个城市,从1到n给这些城市编号.城市之间连着高速公路,并且每两个城市之间有且只有一条通路.不同的高速公路可能有不同的长度.最近Z国经常发生火灾,所以当地政府决定在某些城市修建一些消防站. ...

最新文章

  1. Mysql技术内幕——InnoDB存储引擎
  2. 【Android 安装包优化】移除无用资源 ( 自动移除无用资源 | 直接引用资源 | 动态获取资源 id | Lint 检查资源 )
  3. 椭圆曲线加密算法(ECC)原理和C++实现源码(摘录)
  4. MCtalk教育快报 | 0827
  5. 现代软件工程 团队作业 - 软件分析和用户需求调查 (2013)
  6. 程序员,这600单词你知道吗?
  7. Android获取SharedPreferences失败,且App无法启动
  8. 【影像学基本知识】T1, T2 and PD weighted imaging
  9. 【淘坏菌】Markdown 积累
  10. 几行代码教你轻松瓜分双十一20亿红包
  11. java实现火车票查询_java抓取12306火车余票信息
  12. QQ另存为出现“你没有权限在此位置中保存文件,请与管理员联系以获得相应权限”
  13. python基础语法Day11
  14. Linux tail命令的使用方法详解
  15. 算法笔记(六)多尺度特征融合之FPN/PANet
  16. 合工大计算机录取分数,合肥工业大学适合“捡漏”的专业,录取分数最低
  17. 淘票票sign----js(5: 继续淘票票--sign 生成完成)
  18. Floyd算法求最小环
  19. win10非系统盘的数据迁移
  20. mcjava盗版联机_盗版我的世界怎么局域网联机

热门文章

  1. Linux中使用异步 I/O 大大提高应用程序的性能
  2. 全局变量和局部变量命名规则_变量范围和LEGB规则
  3. sublime同步配置和插件
  4. ceshildkd 124
  5. ORCAD CAPTURE 元件库详解
  6. sql 相加_SQL经典题型
  7. sql执行有时候快有时候慢_如何让你的 SQL 执行的飞起?
  8. jquery全局变量_jQuery源码一个小细节,却很好地体现了性能优化的思想,很优秀...
  9. 写一个方法判断一个字符串是否对称_判断一个男生是否好色的方法
  10. android绘制环形进度_Android实现环形进度条代码