CJOJ 2171 火车站开饭店

2024-01-28 22:40
文章标签 饭店 火车站 2171 cjoj

本文主要是介绍CJOJ 2171 火车站开饭店,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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;
}

这篇关于CJOJ 2171 火车站开饭店的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/655017

相关文章

【FZU】2171 防守阵地 II 线段树

Problem 2171 防守阵地 II Accept: 96    Submit: 360 Time Limit: 3000 mSec    Memory Limit : 32768 KB Problem Description 部队中总共有N个士兵,每个士兵有各自的能力指数Xi,在一次演练中,指挥部确定了M个需要防守的地点,指挥部将选择M个士兵依次进入指定地点进行防守任务,获得

合肥火车站为乌鲁木齐疼痛男孩开辟绿色通道

11月16日14点,备受新疆媒体关注的乌鲁木齐疼痛男孩李成成在经过50多个小时的列车奔波后,安全抵达合肥火车站,受到了来自合肥火车站工作人员和中国好人网志愿者的热情接待。 乌鲁木齐17岁的男孩李成成因“肝豆状核变性”病,已与疼痛相伴5年。“肝豆状核变性”病是一种常染色体隐性遗传的铜代谢缺陷病,常以细微的震颤、轻微的言语不清或动作缓慢为其首发症状,以后逐渐加重并相继出现新的症状。 孩子的母亲赵金

饭店包厢神秘顾客调查的专业实施要领

在餐饮行业中,包厢服务的质量往往直接影响着顾客的整体就餐体验。为了深入了解并优化这一关键环节,神秘顾客调查成为了一种被广泛采用的方法。那么应该如何开展这样的调查呢?本文将给各位分享深圳神秘顾客(SMS)公司在时间中的方法。 深圳神秘顾客(SMS)公司在开展饭店包厢神秘顾客调查时,首先会明确一系列核心调查指标,以确保评估的全面性和深入性。     1.服务质量:包括服务员的礼貌程度、响应速度

基于SpringBoot的饭店外卖平台的设计与实现

项目描述 这是一款基于SpringBoot的饭店外卖平台的系统 模块描述 用户端 登录 首页 商家信息 点餐 菜品列表 下单 订单列表 账号下单列表 个人中心 个人资料 修改信息 评论管理 评论菜品 查看评论 打赏骑手 打赏骑手 管理员 登录 菜品管理 修改 下架 订单列表 下单记录 菜品管理 类别管理 菜品添加 用户管理 用户管理 外卖员管理 评论管理 评论查看 提现管理 提现查

全国航空机场分布矢量数据/旅游景点poi/全国港口码头分布/地铁站分布/火车站分布/POI矢量数据

民用航空机场是指针对包括跑道型机场、表面直升机场、高架直升机场、船上直升机场、直升机水上平台、滑翔机场、水上机场、有人操纵气球施放场以及其他专供民用航空器起降的划定区域。民用航空机场分为通用航空机场和公共运输机场;不包括临时机场和专用机场。         根据中国民航局发布的《通用机场分类管理办法》、《通用航空经营许可管理规定》等,收集全国民用航空机场的位置及属性信息,并将其进行空间化处理,

2019年台湾饭店业务盘点

2018年,共有2, 441家来自中国大陆、香港特别行政区、新加坡、印度尼西亚、印度、泰国、菲律宾、马尔代夫、马来西亚、日本、韩国的酒店参与此项统计业务。而在上述亚太地区市场中,台湾酒店市场近两年来所经历的变化也一直牵动着行业的目光。本文将基于浩华在2019年所进行的《台湾饭店业务统计》,从业绩表现、经营效率和品牌模式三个方面来分析新形势下台湾酒店业发展现状及未来展望。 市场业绩 台北城市酒店

《面试宝典》例题之模拟火车站售票程序

面试宝典第五版284页例题6 题目:创建两个线程模拟火车站两个窗口售票程序,窗口售票时间为1s,两个窗口不能同时售票 之前没写过C的多线程程序,将这道题记录于此以便日后翻看。每当程序被初始化的时候,系统就要创建一个主线程。该线程与C/C++运行期库的启动代码一道开始运行,启动代码则调用进入点函数,并且继续运行直到进入点函数返回并且C/C++运行期库的启动代码调用退出为止。对于许多应用程序来讲,

软件实例分享,饭店餐饮会员卡管理系统怎么弄会员充值怎么记账

软件实例分享,饭店餐饮会员卡管理系统怎么弄会员充值怎么记账 一、前言 以下软件教程以  佳易王餐饮会员管理系统软件V16为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、会员可以登记电子会员卡或使用vip卡片 2、卡类型可以自由定义,可以是充值卡, 3、卡可以设置密码也可以不设置密码 4、流程,新会员信息登记,会员充值、会员消费 5、各统计报表可以

Java多线程应用之火车站售票

在我们的现实生活中,去火车站买票是一件很平常的事,但是你们想过吗,比如我们从一个售票处买了一张票的话,那么其他的售票点就不能找到这张票了,这样就可以保证每个人买的票不会一样,这是通过java的多线程功能实现的,我今天写的只是一个简单版,真正的售票系统功能是更全面的并且不会出现漏洞。 实现代码如下: 第一个类 运用多线程实现买票   控制票的唯一 public class Ticket

(cogs 613 火车站饭店)树形DP

题面 【题目描述】 政府邀请了你在火车站开饭店,但不允许同时在两个相连的火车站开。任意两个火车站有且只有一条路径,每个火车站最多有 50 个和它相连接的火车站。 告诉你每个火车站的利润,问你可以获得的最大利润为多少? 例如下图是火车站网络: 最佳投资方案是 1 , 2 , 5 , 6 这 4 个火车站开饭店可以获得的利润为 90. 【输入格式】 第一行输入整数 N(<=10000