给个链接:ρars/ey

我们考虑一个树上背包。

设 \(f_{u,i}\) 表示在 \(u\) 号节点的子树内删除 \(i\) 个点的最小代价。显然有答案为 \(f_{1,siz_1-1}\)。

接下来我们考虑转移。看这一张图:

这里红圈内的东西为当前的 \(siz_u\),绿圈部分为 \(siz_j\)。

我们枚举 \(x\) 为 \(u\) 子树内已经被删掉的点的数量。考虑 \(x\) 的上界为红圈加绿圈减去 \(u\) 和 \(u\) 的儿子

所以是 \(siz_u+siz_j-cnt-1\),其中 \(cnt\) 为当前是 \(u\) 的第几个儿子。

然后再枚举一个 \(y\),代表 \(j\) 子树内删掉点的数量。

于是我们有 \(f_{u,x}=\min(f_{u,x},f_{u,x-y}+f_{j,y})\)。

接着就是在跑完所有儿子后,再把剩下的点处理掉。具体就是枚举一个 \(i\),然后 \(f_{u,siz_u-1}=\min(f_{u,siz_u-1},f_{u,i}+a_{siz_u-i-1})\),其中 \(i\) 为代价。

代码:

#include<bits/stdc++.h>
#define int long long
#define N 5005
#define M 10005
using namespace std;
int n,a[N],siz[N],f[N][N];
int h[N],e[M],ne[M],idx;
//f_{u,i}表示u节点子树删了i个的代价
void add(int a,int b){
e[idx]=b;ne[idx]=h[a];h[a]=idx++;
}
void dfs(int u,int fa){
siz[u]=1;
int cnt=0;
for(int i=h[u];~i;i=ne[i]){
int j=e[i];
if(j==fa)continue;
dfs(j,u);
cnt++;
for(int x=siz[u]+siz[j]-cnt-1;x;x--){
for(int y=max(x-siz[u],1ll);y<=x&&y<siz[j];y++){
f[u][x]=min(f[u][x],f[u][x-y]+f[j][y]);
}
}
siz[u]+=siz[j];
}
for(int i=0;i<=siz[u]-cnt-1;i++){
f[u][siz[u]-1]=min(f[u][siz[u]-1],f[u][i]+a[siz[u]-i-1]);
}
}
signed main(){
cin>>n;
for(int i=1;i<n;i++){
cin>>a[i];
}
memset(h,-1,sizeof h);
for(int i=1;i<n;i++){
int a,b;
cin>>a>>b;
add(a,b);add(b,a);
}
memset(f,0x3f,sizeof f);
for(int i=1;i<=n;i++){
f[i][0]=0;
}
dfs(1,0);
cout<<f[1][siz[1]-1];
return 0;
}

ρars/ey 题解的更多相关文章

  1. codeforces CF475 ABC 题解

    Bayan 2015 Contest Warm Up http://codeforces.com/contest/475 A - Bayan Bus B - Strongly Connected Ci ...

  2. noip2013Day2T3-华容道【一个蒟蒻的详细题解】

    描述 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面,华容道是否根本就无法完成,如果能完成,最少需要多少时间. 小 B 玩的华容道与经典的 ...

  3. 2015浙江财经大学ACM有奖周赛(一) 题解报告

    2015浙江财经大学ACM有奖周赛(一) 题解报告 命题:丽丽&&黑鸡 这是命题者原话. 题目涉及的知识面比较广泛,有深度优先搜索.广度优先搜索.数学题.几何题.贪心算法.枚举.二进制 ...

  4. “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛题解&&源码【A,水,B,水,C,水,D,快速幂,E,优先队列,F,暴力,G,贪心+排序,H,STL乱搞,I,尼姆博弈,J,差分dp,K,二分+排序,L,矩阵快速幂,M,线段树区间更新+Lazy思想,N,超级快速幂+扩展欧里几德,O,BFS】

    黑白图像直方图 发布时间: 2017年7月9日 18:30   最后更新: 2017年7月10日 21:08   时间限制: 1000ms   内存限制: 128M 描述 在一个矩形的灰度图像上,每个 ...

  5. NOIP2013题解

    NOIP2013题解 Day1 转圈游戏 circle 快速幂模板题. #include<iostream> using namespace std; int n,m,k,x; int f ...

  6. SPOJ LAS(BFS)题解

    题目:VJ 思路: BFS+回溯,但是要剪枝,看了dalao的题解,超时+WA无数发,终于过了 #include<cstdio> #include<cstring> #incl ...

  7. NOIP2013 DAY2题解

    DAY2 T1积木大赛 传送门 题目大意:每次可以选区间[l,r]加1,最少选几次,让每个位置有 它应有的高度. 题解:O(n)扫一遍就好了.后一个比前一个的高度低,那么前一个已经把它覆盖了, 如果高 ...

  8. SDOI 2018二轮题解(除Day2T1)

    博主诈尸啦 虽然一轮之后就退役了但是二轮还是要去划划水呀~ 然鹅学了不到一个月文化课再回来看OI的东西有一种恍如隔世的感觉,烤前感觉也没啥可复习的,就补一补去年二轮的题吧. 题目思路基本都参考自sha ...

  9. [NOIP补坑计划]NOIP2013 题解&做题心得

    场上预计得分:100+100+100+100+100+60=560(省一分数线410) 五道傻逼题+一道大搜索题…… 题解: D1T1 转圈游戏 题面 水题送温暖~ #include<algor ...

  10. [kuangbin带你飞]专题一 简单搜索 题解报告

    又重头开始刷kuangbin,有些题用了和以前不一样的思路解决.全部题解如下 点击每道题的标题即可跳转至VJ题目页面. A-棋盘问题 棋子不能摆在相同行和相同列,所以我们可以依此枚举每一行,然后标记每 ...

随机推荐

  1. 使用python+pytesseract实现图片中文字的识别

    一.安装tesseract 1.下载链接 https://digi.bib.uni-mannheim.de/tesseract/ 2.网盘下载地址 链接:https://pan.baidu.com/s ...

  2. 架构师必知的11种API性能优化方法

    前言 接口性能优化是后端开发人员经常碰到的一道面试题,因为它是一个跟开发语言无关的公共问题. 这个问题既可以很简单,也可以相当复杂. 有时候,只需要添加一个索引就能解决. 有时候,代码需要进行重构. ...

  3. 高通Android UEFI中的LCD分析(2):关键的函数

    # 高通Android UEFI中的LCD分析(2):关键的函数 背景 在启动流程分析中,看到了几个经常出现的函数,这里实际分析一下有关的实现.以搞清楚高通做了什么,以及我们能做什么. 重要函数 MD ...

  4. 【AppStore】一文让你学会IOS应用上架Appstore

    前言 咱们国内现在手机分为两类,Android手机与苹果手机,现在用的各类APP,为了手机的使用安全,避免下载到病毒软件,官方都极力推荐使用手机自带的应用商城进行下载,但是国内Android手机品类众 ...

  5. 怎样理解 Vue 的单向数据流?

    数据从父级组件传递给子组件,只能单向绑定. 子组件内部不能直接修改从父级传递过来的数据. 所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定:父级 prop 的更新会向下流动到子组件 ...

  6. PHP 缓存技术

    PHP 缓存介绍 什么是缓存 数据交换的缓冲区(称作Cache) 临时文件交换区 缓存作用 减少网络延迟,加快页面打开速度 减少数据查询次数,降低数据库压力 降低系统负荷,极大的提升系统性能 常用缓存 ...

  7. 靶机: hard_socnet2

    靶机: hard_socnet2 准备 靶机:https://download.vulnhub.com/boredhackerblog/hard_socnet2.ova MD5 验证: 9d6bed1 ...

  8. 关于导入react native项目导致运行异常的那些事

    从git上导入公司的项目,在本地运行的时候,项目无法运行.sdk,jdk,node都是使用公司规定的版本,项目中的local.properties文件sdk.dir路径也换成了自己本地的目录,结果就在 ...

  9. Vue 中引用第三方js总结

    vue中引用第三方js总结 By:授客 QQ:1033553122 实践环境 win10 Vue 2.9.6 本文以引用jsmind为例,讲解怎么在vue中引用第三方js类库 基础示例 1.把下载好的 ...

  10. 关于构建一个可视化+code系统的思路

    思路是有参考UE的现有功能,加之前的逻辑. 大概分为三个模块: 底层, 即native层 ,这一层实际上分为三个部分:  1.GUI层的解析,2.数据存储   3.Code的解析 这三部分关键在于他们 ...