洛谷 P3574 [POI2014]FAR-FarmCraft
题目描述

输入输出格式
输入格式:

输出格式:
一行,包含一个整数,代表题目中所说的最小时间。
输入输出样例
样例输入
样例输出
提示

分析
我们设f[x]为遍历完以x为根的子树且将这棵子树上所有的电脑都安装完毕最终又回到x的最小安装时间
对于一棵子树,根节点所需要的安装时间自然是它本身的价值
那么各个子节点的价值可以直接拿来用吗?显然是不可以的
因为你从根节点遍历到子节点需要花费时间
所以这时就有遍历优先级的问题了
我们是先遍历安装时间最长的子树吗?这样是不可以的,比如下面这幅图

那我们该怎么办呢,我们可以发现,

代码
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int maxn=;
struct Edge{
int next,to;
}e[maxn];
int head[maxn],len;
void Ins(int a,int b){
e[++len].to=b;e[len].next=head[a];head[a]=len;
}
struct Node{
int f,siz;
Node(){}
Node(int a,int b){f=a,siz=b;}
bool operator < (const Node&A)const{
return f-siz<A.f-A.siz;
}
};
int dp[maxn],g[maxn],val[maxn],que[maxn];
void dfs(int u,int fa){
priority_queue<Node> q;
if(u-)dp[u]=val[u];
for(int i=head[u];i!=-;i=e[i].next){
int v=e[i].to;
if(v==fa)continue;
dfs(v,u);q.push(Node(dp[v],g[v]));
}
while(!q.empty()){
Node now=q.top();q.pop();
dp[u]=max(dp[u],now.f+g[u]+);
g[u]+=now.siz+;
}
}
int main(){
memset(head,-,sizeof(head));
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&val[i]);
for(int i=;i<n;i++){
int a,b;
scanf("%d%d",&a,&b);
Ins(a,b);Ins(b,a);
}
dfs(,);
printf("%d\n",max(dp[],val[]+g[]));
return ;
}
洛谷 P3574 [POI2014]FAR-FarmCraft的更多相关文章
- 洛谷 P3580 - [POI2014]ZAL-Freight(单调队列优化 dp)
洛谷题面传送门 考虑一个平凡的 DP:我们设 \(dp_i\) 表示前 \(i\) 辆车一来一回所需的最小时间. 注意到我们每次肯定会让某一段连续的火车一趟过去又一趟回来,故转移可以枚举上一段结束位置 ...
- 题解【洛谷P3574】[POI2014]FAR-FarmCraft
题面 简化版题意: 有一棵 \(n\) 个点的树,有边权. 你初始在 \(1\) 号节点,你需要走遍整棵树为 \(2 \sim n\) 号点的居民分发电脑,但你的汽油只够经过每条边恰好两次. 一个居民 ...
- 洛谷 P3573 [POI2014]RAJ-Rally 解题报告
P3573 [POI2014]RAJ-Rally 题意: 给定一个\(N\)个点\(M\)条边的有向无环图,每条边长度都是\(1\). 请找到一个点,使得删掉这个点后剩余的图中的最长路径最短. 输入输 ...
- 洛谷P3572 [POI2014]PTA-Little Bird
P3572 [POI2014]PTA-Little Bird 题目描述 In the Byteotian Line Forest there are nn trees in a row. On top ...
- 洛谷——P3576 [POI2014]MRO-Ant colony
P3576 [POI2014]MRO-Ant colony 题目描述 The ants are scavenging an abandoned ant hill in search of food. ...
- 洛谷 P3576 [POI2014]MRO-Ant colony
P3576 [POI2014]MRO-Ant colony 题目描述 The ants are scavenging an abandoned ant hill in search of food. ...
- 洛谷P3576 [POI2014]MRO-Ant colony [二分答案,树形DP]
题目传送门 MRO-Ant colony 题目描述 The ants are scavenging an abandoned ant hill in search of food. The ant h ...
- 2018.09.14 洛谷P3567 [POI2014]KUR-Couriers(主席树)
传送门 简单主席树啊. 但听说有随机算法可以秒掉%%%(本蒟蒻并不会) 直接维护值域内所有数的出现次数之和. 当这个值不大于区间总长度的一半时显然不存在合法的数. 这样在主席树上二分查值就行了. 代码 ...
- 洛谷P3567[POI2014]KUR-Couriers(主席树+二分)
题意:给一个数列,每次询问一个区间内有没有一个数出现次数超过一半 题解: 最近比赛太多,都没时间切水题了,刚好日推了道主席树裸题,就写了一下 然后 WA80 WA80 WA0 WA90 WA80 ?? ...
随机推荐
- vscode的个人配置
前言 此篇只是为了记录自己vscode的设置,防止以后配置丢失,无实际意义 { "files.autoSave": "afterDelay", "ed ...
- 优雅的敲JS代码的几个原则
一.条件语句 1,使用 Array.includes 来处理多重 || 条件 // ----- 一般 ------ if (fruit == 'apple' || fr ...
- 容器技术之Dockerfile(三)
前面我们聊到了dockerfile的 FROM.COPY .ADD.LABAL.MAINTAINER.ENV.ARG.WORKDIR.VOLUME.EXPOSE.RUN.CMD.ENTRYPOINT指 ...
- CentOS8.1操作系下使用通用二进制包安装MySQL8.0(实践整理自MySQL官方)
写在前的的话: 在IT技术日新月异的今天,老司机也可能在看似熟悉的道路上翻车,甚至是大型翻车现场!自己一个人开车过去翻个车不可怕,可怕的是带着整个团队甚至是整个公司一起翻车山崖下,解决办法就是:新出现 ...
- Hook踩坑记:React Hook react-unity-webgl
自公司前后分离上手React以来,一个坑一个坑的踩,Class的全生命周期云里雾里,还么屡明白,就抱上了Hook的大腿不松手,确实爽到飞起.修改到Hook的过程基本比较顺畅,直接少了三分之一的代码,组 ...
- Flask 安装和简单使用
安装 pip install flask # 1 导入 Falsk from flask import Flask # 2 生成一个 Flask 对象,__name__表示当前文件的名字 app = ...
- Cron表达式,springboot定时任务
详细请看这篇博客 参考:https://blog.csdn.net/belonghuang157405/article/details/83410197 Cron表达式是一个字符串,字符串以5或6个空 ...
- WDCP配置ThinkPHP5伪静态隐藏index.php,出现“”解决重定向次数过”问题
站点域名的配置:xxx.com.conf server { listen 80; root /www/web/xxx_com/public_html; server_name xxx.com; ind ...
- 附022.Kubernetes_v1.18.3高可用部署架构一
kubeadm介绍 kubeadm概述 参考附003.Kubeadm部署Kubernetes. kubeadm功能 参考附003.Kubeadm部署Kubernetes. 本方案描述 本方案采用kub ...
- (七)MySQL常见的数据类型、约束和标识列
一.MySQL常见数据类型 1.数值型: ①整型:tinyint.smllint.mediumint.int/integer.bigint 图源:尚硅谷李玉婷 案例1:关键表格teacher,分别添加 ...