Problem

bzoj权限题,洛谷上可提交

洛谷上的奇葩翻译不要看,很多条件缺漏

题意简述:给定一棵树,每条边权为1,给定所有点点权,每条边仅能走两次,求以一定顺序遍历整棵树后,使所有点中的到达时间加点权的和的最大值最小(到达了就开始安装程序,点权即为安装时间,求最早什么时候所有电脑安装完毕)

Solution

前置技能:树形Dp、贪心

这一类\(n\)在\(1e5\)范围的树上问题,一般都是树状Dp,考虑到题目中每条边仅能走两次,所以一旦到达了一个节点,一定会将以这个节点为根的子树全部遍历完再出子树,所以只用考虑到达一个节点后访问其儿子的先后顺序

考虑到遍历每棵子树的时间是一定的,即至少要花遍历整颗子树的时间,定义富余时间为遍历完某棵子树之后还需等待的时间,即子树下所有程序安装完的时间减去遍历时间,那么有一个贪心策略就是富余时间多的子树优先遍历,因为整棵树的遍历时间一定,所以富余部分多的优先解决

然后就没了,时间\(O(n\log n)\),本地测会爆栈,直接交就好了

Code

#include<bits/stdc++.h>
using namespace std;
#define rg register template <typename _Tp> inline _Tp read(_Tp&x){
char c11=getchar(),ob=0;x=0;
while(c11^'-'&&!isdigit(c11))c11=getchar();if(c11=='-')ob=1,c11=getchar();
while(isdigit(c11))x=x*10+c11-'0',c11=getchar();if(ob)x=-x;return x;
} const int N=501000;
struct Edge{int v,nxt;}a[N<<1];
int head[N],f[N],g[N],stk[N];
int n,_; template <typename _Tp> inline _Tp tmax(const _Tp A,const _Tp B){return A>B?A:B;} inline void add(int u,int v){a[++_].v=v,a[_].nxt=head[u],head[u]=_;return ;} inline int cmp(const int&A,const int&B){return f[A]-g[A]>f[B]-g[B];} inline void dfs(int x,int fa){
for(int i=head[x];i;i=a[i].nxt)
if(a[i].v!=fa)
dfs(a[i].v,x);
int top=0;
for(rg int i=head[x];i;i=a[i].nxt)
if(a[i].v!=fa){
g[a[i].v]+=2;
f[a[i].v]=tmax(g[a[i].v],f[a[i].v]+1);
stk[++top]=a[i].v;
}
sort(stk+1,stk+top+1,cmp);
for(rg int i=1;i<=top;++i){
f[x]=tmax(f[x],g[x]+f[stk[i]]);
g[x]+=g[stk[i]];
}return ;
} int main(){
read(n);
for(rg int i=1;i<=n;++i)read(f[i]);int vas=f[1];
for(rg int i=1,x,y;i<n;++i)read(x),read(y),add(x,y),add(y,x);
dfs(1,0);printf("%d\n",tmax(f[1],g[1]+vas));return 0;
}

题解-POI2014 FAR-FarmCraft的更多相关文章

  1. 题解-POI2014 Supercomputer

    Problem 辣鸡bzoj权限题,洛谷链接 题意概要:一棵 \(n\) 个点有根树.\(Q\) 次询问给出一个 \(K\),回答遍历完整棵树所需最少操作次数.每次操作可以选择访问不超过 \(K\) ...

  2. POI2014题解

    POI2014题解 [BZOJ3521][Poi2014]Salad Bar 把p当作\(1\),把j当作\(-1\),然后做一遍前缀和. 一个合法区间\([l,r]\)要满足条件就需要满足所有前缀和 ...

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

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

  4. [补档][Poi2014]FarmCraft

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

  5. FarmCraft[POI2014]

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

  6. [BZOJ 3829][POI2014] FarmCraft

    先贴一波题面... 3829: [Poi2014]FarmCraft Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 421  Solved: 197[ ...

  7. 【bzoj3829】[Poi2014]FarmCraft 贪心

    原文地址:http://www.cnblogs.com/GXZlegend/p/6826667.html 题目描述 In a village called Byteville, there are   ...

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

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

  9. BZOJ3829 [Poi2014]FarmCraft 【树形dp】

    题目链接 BZOJ3829 题解 设\(f[i]\)为从\(i\)父亲进入\(i\)之前开始计时,\(i\)的子树中最晚装好的时间 同时记\(siz[i]\)为节点\(i\)子树大小的两倍,即为从父亲 ...

随机推荐

  1. inux进程/线程调度策略与 进程优先级

    目的: 系统性的认识linux的调度策略(SCHED_OTHER.SCHED_FIFO.SCHED_RR): 实时调度?分时调度? 混搭系统(实时任务+分时任务),怎样调度. linux的调度策略 l ...

  2. 流媒体技术学习笔记之(十八)互联网草案HTTP直播流2017年5月

    原文地址:https://tools.ietf.org/html/draft-pantos-http-live-streaming-23 1.HTTP直播流介绍 HTTP实时流媒体提供了一个可靠的,成 ...

  3. window跟vue变量互相绑定

    js实现变量监听 //定义一个对象,挂载到window下,后续在任何模块中,给这个对象的show属性赋值,都将触发set对应的代码,我这么写主要是为了解决vue子组件向父组件传值的问题 window. ...

  4. EL 快速开始

    技术选型上,推荐使用EL表达式,少用不用taglib. 大趋势 前后端分离 mvc+mvvm ,使用[thymeleaf]和前端更好结合,也是springboot官方推荐的做法. [viewTicke ...

  5. 【SRM-07 D】天才麻将少女KPM

    Description 天才麻将少女KPM立志要在日麻界闯出一番名堂.KPM上周叒打了n场麻将,但她这次又没控分,而且因为是全市参与的麻将大赛,所以她的名次范围是0..10^5.名次可能等于0是因为K ...

  6. 20155324 2016-2017-2 《Java程序设计》第8周学习总结

    20155324 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 通用API -** 日志API** 1.~java.util.logging~包提供了日志功 ...

  7. 【转】AJAX 跨域请求 - JSONP获取JSON数据

    来源:http://justcoding.iteye.com/blog/1366102/ Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流 ...

  8. Tomcat清理日志文件无法立即释放磁盘空间

    1 自己删除了Tomcat的日志文件,但是依然显示磁盘百分百占用 进入Tomcat目录显示日志已经删除 查询磁盘空间依旧百分百占用 2 自己杀死Tomcat进程然后重启,成功释放空间 3 原因,通过网 ...

  9. sqlserver分组统计合并

    ---分组partition by;统计:Count();合并:for xml path('') with cte as( select COUNT(t2.Id) OVER(PARTITION BY ...

  10. MIME 类型

    关于读音 为了防止大家出去丢人,我先示范一下,MIME应该独坐[maim],听起来就好像“男人”的英语法人一样. 浏览器和MIME的关系 浏览器依靠MIME类型解释网页. 每当浏览器请求一个web页面 ...