题目链接 https://www.luogu.org/problem/P3574

题意

翻译其实已经很明确了

分析

这题一眼就是贪心啊,但贪心的方法要思索一下,首先是考虑先走时间多的子树,但不太现实,因为时间跟点的个数也有关系,而且很有可能另外一棵子树不去走会闲置很长时间,就是这棵子树本来可以走一遍然后在子树装软件的时候去走别的树,所以不能这么贪心。那,要怎么办呢?

对于一棵子树,我们必须要走的是跑路时间,而安装可以在去别的子树走的时候干,所以我们肯定要先弄安装时间-跑路时间最大的子树,因为这样的话,我们就可以在它安装的时候去弄别的子树,证明用反证法,先弄别的子树最后时长一定大于先弄它,所以跑完每一个子树后,把它的安装时间和跑路时间扔到堆里,最后把堆取完,就完了,状态转移方程\(DP[u]=max(DP[son]+g[u]+1)\),g数组记录的跑路时间。

细节问题

首先呢,longlong不需要,爆不掉。

然后是加边,加单向边会出问题,加完从一号点开始可能不能走遍整张图,所以只能加双向边,加双向边数组要开2倍啊啊啊啊啊,本蒟蒻忘开然后RE了,接着我把5e5改成了6e5,还RE,然后我以为递归炸了,调了半天,我是不是傻。。。。

#include<iostream>
#include<algorithm>
using namespace std;
const int N=6e5+10;
struct Edge{
int nxt,to;
}e[N<<1];
int Head[N],len;
void Ins(int a,int b){
e[++len].to=b;e[len].nxt=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[N],g[N],val[N],que[N];
void dfs(int u,int fa){
priority_queue<Node> q;
if(u-1)dp[u]=val[u];
for(int i=Head[u];i;i=e[i].nxt){
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]+1);
g[u]+=now.siz+2;
}
}
int main(){
ios::sync_with_stdio(false);
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>val[i];
for(int i=1;i<n;i++){
int a,b;
cin>>a>>b;
Ins(a,b);Ins(b,a);
}
dfs(1,0);
cout<<max(dp[1],val[1]+g[1]);
return 0;
}

POI2014 FAR-FarmCraft 树形DP+贪心的更多相关文章

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

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

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

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

  3. 【bzoj4027】[HEOI2015]兔子与樱花 树形dp+贪心

    题目描述 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1个树枝连接,我们可以把它 ...

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

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

  5. [BZOJ1596] [Usaco2008 Jan]电话网络(树形DP || 贪心)

    传送门 1.树形DP #include <cstdio> #include <cstring> #include <iostream> #define N 1000 ...

  6. 【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 ...

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

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

  8. [POI2014]FAR-FarmCraft 树形DP + 贪心思想

    (感觉洛谷上题面那一小段中文根本看不懂啊,好多条件都没讲,直接就是安装也要一个时间啊,,,明明不止啊!还好有百度翻译......) 题意:一棵树,一开始在1号节点(root),边权都为1,每个点有点权 ...

  9. 树形DP+贪心(乱搞)(HDU4714)

    题意:给出一个树形图,要求把该树形成一个环最少的步骤(断开一条边和形成一条边都需一步) 分析:很明显,要想把树形成一个环,就要先把其分裂成m条子链之后把子链形成环需要的步骤是2*m+1,所以只需要m最 ...

随机推荐

  1. almost最好的Vue + Typescript系列02 项目结构篇

    基于vue-cli 3.x,配合typescript的环境构建的新vue项目,跟以前的结构相比,有了一些变化,下面我们来简单的了解一下 基本结构: node_modules: 项目中安装的依赖模块 p ...

  2. 学习使用Guava Cache

    官方文档:https://github.com/google/guava/wiki/CachesExplained 目录 一.guava cache介绍 二.快速入门 2.1.引入依赖 2.2.第一个 ...

  3. spring——AOP原理及源码(五)

    前情回顾: 在上一篇中,通过 wrapIfNecessary 方法,我们获取到了合适的增强器(日志方法)与业务类进行包装,最终返回了我们业务类的代理对象. 本篇我们将从业务方法的执行开始,看看增强器( ...

  4. 使用python3编写程序,生成10个随机数,每个元素的值介于1到100之间,并计算所有元素的和、平均值。

    代码如下: import random n = 0 sum = 0 while n < 10: num = random.randint(1, 100) sum = sum + num n += ...

  5. 基于Linux Lite 4.8制作“Windows 12 Lite”正式发布

    值得注意的是,这款Windows 12 Lite的宣传标语将矛头直指Windows 10,声称不会迫使用户更新.不会存在病毒或恶意软件.启动速度比Win 10快3倍.提供8万多款优质软件.允许与Win ...

  6. [项目分享]JSP+Servlet+JDBC实现的云端汽修后台管理系统

    本文存在视频版本,请知悉 项目简介 项目来源于:https://gitee.com/chenlinSir/CloudDemo-servlet 难度等级:简单 基于JSP+Servlet+Jdbc的云端 ...

  7. ret.data[0]._highlight = true iview table表格高亮

    ret.data[0]._highlight = true iview table表格高亮

  8. google recaptcha-v2

    最近在给公司的网页把传统的输入字符数字的验证码改google reCAPTCHA验证,就写写我学到的和一些我的理解!说得不好请勿怪!有兴趣可以的去https://developers.google.c ...

  9. linux下查看系统版本

    工作中我们会遇到安装软件需要知道linux是什么发行版本,话不多话上干货(按照我认为常用排序) 1. lsb_release -a 名词解释:LSB (Linux Standard Base) # 如 ...

  10. 都2020年了 还要学JSP吗?

    前言 2020年了,还需要学JSP吗?我相信现在还是在大学的同学肯定会有这个疑问. 其实我在18年的时候已经见过类似的问题了「JSP还应该学习吗」.我在18年发了几篇JSP的文章,已经有不少的开发者评 ...