这题直接贪心显然不可行.

考虑树形dp,用 \(f_i\) 表示到 \(i\) 人后,以 \(i\) 为根的所有人安装完的最短时间.

对于一个节点 \(u\), 假设拜访子节点的顺序为 \(v_1,v_2,...,v_m\) ,那么得到转移方程.

\[f_u = max(f_v + \sum\limits_{j = 1}^{i - 1}sum_j)
\]

其中 \(sum_i\) 表示拜访完以 \(i\) 为根的子树的所有人所花的时间,即 \((siz_i -1) *2\)

拜访的顺序考虑贪心

对于两个相邻整数 \(i,j\)​ ,必须满足 \(f_j + \sum\limits_{k =1}^{j-1}sum_k<f_i+ \sum\limits_{k=1}^{i-1}sum_k+sum_j\)​

\(\to f_j+sum_i < f_i+sum_j\\\to f_j-sum_j<f_i-sum_i\)

所以只要将 \(f_i - sum_i\) 从大到小排序即可.

const int N = 5e5 + 10;
vector<int>e[N];
int f[N], a[N], g[N];
bool cmp(int x, int y) {return g[x] - f[x] > g[y] - f[y];}
void dfs(int u, int fa) {
for (int v : e[u]) {
if (v == fa)continue;
dfs(v, u);
}
sort(e[u].begin(), e[u].end(), cmp);
if (u != 1) g[u] = a[u];
for (int v : e[u]) {
if (v == fa)continue;
g[u] = max(g[u], g[v] + f[u] + 1);
f[u] += f[v] + 2;
}
}
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n; cin >> n;
for (int i = 1; i <= n; ++i) cin >> a[i];
for (int i = 1, x, y; i < n; ++i) {
cin >> x >> y;
e[x].push_back(y);
e[y].push_back(x);
}
dfs(1, 0);
cout << max(g[1], f[1] + a[1]);
}

P3574 [POI2014]FAR-FarmCraft (树形DP)的更多相关文章

  1. bzoj 3829: [Poi2014]FarmCraft 树形dp+贪心

    题意: $mhy$ 住在一棵有 $n$ 个点的树的 $1$ 号结点上,每个结点上都有一个妹子. $mhy$ 从自己家出发,去给每一个妹子都送一台电脑,每个妹子拿到电脑后就会开始安装 $zhx$ 牌杀毒 ...

  2. 【BZOJ3872】[Poi2014]Ant colony 树形DP+二分

    [BZOJ3872][Poi2014]Ant colony Description 给定一棵有n个节点的树.在每个叶子节点,有g群蚂蚁要从外面进来,其中第i群有m[i]只蚂蚁.这些蚂蚁会相继进入树中, ...

  3. 【BZOJ3522】【BZOJ4543】【POI2014】Hotel 树形DP 长链剖分 启发式合并

    题目大意 ​ 给你一棵树,求有多少个组点满足\(x\neq y,x\neq z,y\neq z,dist_{x,y}=dist_{x,z}=dist_{y,z}\) ​ \(1\leq n\leq 1 ...

  4. 【BZOJ3829】[Poi2014]FarmCraft 树形DP(贪心)

    [BZOJ3829][Poi2014]FarmCraft Description In a village called Byteville, there are   houses connected ...

  5. BZOJ3829[Poi2014]FarmCraft——树形DP+贪心

    题目描述 In a village called Byteville, there are   houses connected with N-1 roads. For each pair of ho ...

  6. bzoj 3872: [Poi2014]Ant colony -- 树形dp+二分

    3872: [Poi2014]Ant colony Time Limit: 30 Sec  Memory Limit: 128 MB Description   There is an entranc ...

  7. [bzoj3872][Poi2014]Ant colony_树形dp

    Ant colony bzoj-3872 Poi-2014 题目大意:说不明白.....题目链接 注释:略. 想法:两个思路都行. 反正我们就是要求出每个叶子节点到根节点的每个路径权值积. 可以将边做 ...

  8. BZOJ3836 [Poi2014]Tourism 【树形dp +状压dp】

    题目链接 BZOJ3836 题解 显然这是个\(NP\)完全问题,此题的解决全仗任意两点间不存在节点数超过10的简单路径的性质 这意味着什么呢? \(dfs\)树深度不超过\(10\) \(10\)很 ...

  9. BZOJ3522 [Poi2014]Hotel 【树形dp】

    题目链接 BZOJ3522 题解 就是询问每个点来自不同子树离它等距的三个点的个数 数据支持\(O(n^2)\),可以对每个距离分开做 设\(f[i][j]\)表示\(i\)的子树中到\(i\)距离为 ...

  10. 树形DP水题系列(1):FAR-FarmCraft [POI2014][luogu P3574]

    题目 大意: 边权为1 使遍历树时到每个节点的时间加上点权的最大值最小 求这个最小的最大值 思路: 最优化问题 一眼树形DP 考虑状态设立 先直接以答案为状态 dp[u] 为遍历完以u为根的子树的答案 ...

随机推荐

  1. 搭建 MongoDB (v6.0) 副本集记录

    副本集概述 副本集(Replica Set)是一组带有故障转移的 MongoDB 实例组成的集群,由一个主(Primary)服务器和多个从(Secondary)服务器构成.通过Replication, ...

  2. 从零开始的 dbt 入门教程 (dbt-core 基础篇)

    最近一直在处理数据分析和数据建模的事情,所以接触了 dbt 等数据分析的工具,国内目前对于 dbt 比较详细的资料不多,所以打算写四道五篇 dbt 相关的文章,本文属于 dbt 系列的第一篇,本篇主要 ...

  3. docker启动完美容器的过程

    这里是我用docker启动所有常见的容器完美的过程,就是一次创建,后面就可以一直使用 文档: nanshaws/docker-everything: 用docker来创建各种容器,完美文档教你按照步骤 ...

  4. 我理解的null和“ “,希望大家给予更正。

    我认为null是零的意思,就是没有任何的东西,比如说文件的读取中,没有任何的东西就是null,刚刚用new String创建的String里面有一个引用,所以它不为null,如果用String h=& ...

  5. MySQL笔记01: MySQL入门_1.2 MySQL下载安装与配置

    2.2 MySQL下载安装与配置 2.2.1 MySQL下载 MySQL中文官网:https://www.mysql.com/cn/ MySQL英文官网:https://www.mysql.com/ ...

  6. dubbo优化

    dubbo 的优化配置 在spring整合的配置文件中配置1. 超时配置在消费方调用服务方接口服务时,会发生如下超时错误,Dubbo消费方在调用服务时,超时时间默认是1000毫秒,这个时间可能比较短, ...

  7. 衡兰芷若成绝响,人间不见周海媚(4k修复基于PaddleGan)

    一代人有一代人的经典回忆,1994年由周海媚.马景涛.叶童主演的<神雕侠侣>曾经风靡一时,周海媚所诠释的周芷若凝聚了汉水之钟灵,峨嵋之毓秀,遇雪尤清,经霜更艳,俘获万千观众,成为了一代人的 ...

  8. Bugku CTF web题

    web2 查看网页源码,发现flag

  9. Codeforces-470 div2 C题

    C. Producing Snow time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  10. 5.elasticsearch中查询条件

    目录 一.URI查询 指定字段.泛查询 分组和phrase Bool条件 must条件 范围查询 通配符查询 正则表达式 模糊匹配与近似查询 二.RequestBody&DSL ignore_ ...