题目传送门

题目描述

输入输出格式

输入格式:

输出格式:

一行,包含一个整数,代表题目中所说的最小时间。

输入输出样例

样例输入

  1.  

样例输出

提示

分析

我们设f[x]为遍历完以x为根的子树且将这棵子树上所有的电脑都安装完毕最终又回到x的最小安装时间

对于一棵子树,根节点所需要的安装时间自然是它本身的价值

那么各个子节点的价值可以直接拿来用吗?显然是不可以的

因为你从根节点遍历到子节点需要花费时间

所以这时就有遍历优先级的问题了

我们是先遍历安装时间最长的子树吗?这样是不可以的,比如下面这幅图

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

代码

  1. #include<iostream>
  2. #include<algorithm>
  3. #include<cstdio>
  4. #include<cstring>
  5. #include<queue>
  6. using namespace std;
  7. const int maxn=;
  8. struct Edge{
  9. int next,to;
  10. }e[maxn];
  11. int head[maxn],len;
  12. void Ins(int a,int b){
  13. e[++len].to=b;e[len].next=head[a];head[a]=len;
  14. }
  15. struct Node{
  16. int f,siz;
  17. Node(){}
  18. Node(int a,int b){f=a,siz=b;}
  19. bool operator < (const Node&A)const{
  20. return f-siz<A.f-A.siz;
  21. }
  22. };
  23. int dp[maxn],g[maxn],val[maxn],que[maxn];
  24. void dfs(int u,int fa){
  25. priority_queue<Node> q;
  26. if(u-)dp[u]=val[u];
  27. for(int i=head[u];i!=-;i=e[i].next){
  28. int v=e[i].to;
  29. if(v==fa)continue;
  30. dfs(v,u);q.push(Node(dp[v],g[v]));
  31. }
  32. while(!q.empty()){
  33. Node now=q.top();q.pop();
  34. dp[u]=max(dp[u],now.f+g[u]+);
  35. g[u]+=now.siz+;
  36. }
  37. }
  38. int main(){
  39. memset(head,-,sizeof(head));
  40. int n;
  41. scanf("%d",&n);
  42. for(int i=;i<=n;i++)
  43. scanf("%d",&val[i]);
  44. for(int i=;i<n;i++){
  45. int a,b;
  46. scanf("%d%d",&a,&b);
  47. Ins(a,b);Ins(b,a);
  48. }
  49. dfs(,);
  50. printf("%d\n",max(dp[],val[]+g[]));
  51. return ;
  52. }

洛谷 P3574 [POI2014]FAR-FarmCraft的更多相关文章

  1. 洛谷 P3580 - [POI2014]ZAL-Freight(单调队列优化 dp)

    洛谷题面传送门 考虑一个平凡的 DP:我们设 \(dp_i\) 表示前 \(i\) 辆车一来一回所需的最小时间. 注意到我们每次肯定会让某一段连续的火车一趟过去又一趟回来,故转移可以枚举上一段结束位置 ...

  2. 题解【洛谷P3574】[POI2014]FAR-FarmCraft

    题面 简化版题意: 有一棵 \(n\) 个点的树,有边权. 你初始在 \(1\) 号节点,你需要走遍整棵树为 \(2 \sim n\) 号点的居民分发电脑,但你的汽油只够经过每条边恰好两次. 一个居民 ...

  3. 洛谷 P3573 [POI2014]RAJ-Rally 解题报告

    P3573 [POI2014]RAJ-Rally 题意: 给定一个\(N\)个点\(M\)条边的有向无环图,每条边长度都是\(1\). 请找到一个点,使得删掉这个点后剩余的图中的最长路径最短. 输入输 ...

  4. 洛谷P3572 [POI2014]PTA-Little Bird

    P3572 [POI2014]PTA-Little Bird 题目描述 In the Byteotian Line Forest there are nn trees in a row. On top ...

  5. 洛谷——P3576 [POI2014]MRO-Ant colony

    P3576 [POI2014]MRO-Ant colony 题目描述 The ants are scavenging an abandoned ant hill in search of food. ...

  6. 洛谷 P3576 [POI2014]MRO-Ant colony

    P3576 [POI2014]MRO-Ant colony 题目描述 The ants are scavenging an abandoned ant hill in search of food. ...

  7. 洛谷P3576 [POI2014]MRO-Ant colony [二分答案,树形DP]

    题目传送门 MRO-Ant colony 题目描述 The ants are scavenging an abandoned ant hill in search of food. The ant h ...

  8. 2018.09.14 洛谷P3567 [POI2014]KUR-Couriers(主席树)

    传送门 简单主席树啊. 但听说有随机算法可以秒掉%%%(本蒟蒻并不会) 直接维护值域内所有数的出现次数之和. 当这个值不大于区间总长度的一半时显然不存在合法的数. 这样在主席树上二分查值就行了. 代码 ...

  9. 洛谷P3567[POI2014]KUR-Couriers(主席树+二分)

    题意:给一个数列,每次询问一个区间内有没有一个数出现次数超过一半 题解: 最近比赛太多,都没时间切水题了,刚好日推了道主席树裸题,就写了一下 然后 WA80 WA80 WA0 WA90 WA80 ?? ...

随机推荐

  1. 批量执行app自动化测试思路设计图

  2. 如何优雅地停止 Spring Boot 应用?

    首先来介绍下什么是优雅地停止,简而言之,就是对应用进程发送停止指令之后,能保证正在执行的业务操作不受影响,可以继续完成已有请求的处理,但是停止接受新请求. 在 Spring Boot 2.3 中增加了 ...

  3. opencv 移植

    1.ubunut系统搭建opencv+python开发环境 1.1.ubuntu系统安装pip3工具 sudo apt-get install python3-pip //安装python模块安装工具 ...

  4. 学习nginx从入门到实践(四) 基础知识之nginx基本配置语法

    nginx基本配置语法 1.http相关 展示每次请求的请求头: curl -v http://www.baidu.com 2.nginx日志类型 error.log. access.log log_ ...

  5. 实现简易版react中createElement和render方法

    function createElement(type, config, children) { // 1. 创建一个对象 // 2.根据参数config修改这个对象 // 3.把children参数 ...

  6. logrotate 如何执行日志按照大小切分

    说在最先的话,logrotate要设置按照文件大小来配置日志切分,需要通过三个东西. 1.配置logrotate 的配置文件 命名未任意文件,在启动的时候指定,例如/etc/weblog.conf 参 ...

  7. JVM内存结构详解

    从java编程语言说起... 1. Java编程语言简介 1.1 编程语言概述 系统级和应用级 系统级:C,C++,go,erlang 应用级:C#,Java,Python,Perl,Ruby,php ...

  8. Mybatis源码手记-从缓存体系看责任链派发模式与循环依赖企业级实践

    一.缓存总览 Mybatis在设计上处处都有用到的缓存,而且Mybatis的缓存体系设计上遵循单一职责.开闭原则.高度解耦.及其精巧,充分的将缓存分层,其独到之处可以套用到很多类似的业务上.这里将主要 ...

  9. LR字符串处理函数-lr_save_var

    int lr_save_var ("截取的字符串"+start,len,options,param_name) start:表示从第几位截取  len:表示截取长度  option ...

  10. 如何用 Python 和 API 收集与分析网络数据?

    摘自 https://www.jianshu.com/p/d52020f0c247 本文以一款阿里云市场历史天气查询产品为例,为你逐步介绍如何用 Python 调用 API 收集.分析与可视化数据.希 ...