题目大意

给你两棵树,结点分别是1~A与1~B,然后给了N台设备,并且A树和B树的叶子结点(两棵树的叶子节点数量相同)都是链接电机的。问,最多可以删掉几条边使得每个设备都能连到任意一棵(或两棵)树的根节点(1号点)

思路

对于每棵树,维护\(val[cnt][i][j]\),\(cnt\)是那个树表示我删掉这个子树的所有边之后,\([i,j]\)这个范围的设备不保证能够全部连上我的根。

用一个\(f[i]\)表示\([1,i]\)区间内,全都能连上根最多能删除多少条边,那么转移就是\(f[i]=max(f[i],f[j-1]+max(val[cnt][j][i]))\)

代码

#include<bits/stdc++.h>
#include<vector>
using namespace std;
const int N=2019;
vector<int> G[2][N];
int f[N];
int val[2][N][N],l[2][N],r[2][N],size[2][N];
int x,n,a;
void dfs(int num,int x)
{
if(x!=1) size[num][x]=1;
for(int i=0;i<G[num][x].size();++i)
{
int to=G[num][x][i];
dfs(num,to);
size[num][x]+=size[num][to];
l[num][x]=min(l[num][x],l[num][to]);
r[num][x]=max(r[num][x],r[num][to]);
}
val[num][l[num][x]][r[num][x]]=max(val[num][l[num][x]][r[num][x]],size[num][x]);
}
void read() {
cin>>n;
for(int cnt=0; cnt<=1; ++cnt) {
cin>>a;
for(int i=1; i<=a; i++) l[cnt][i]=a+1,r[cnt][i]=0;
for(int i=2; i<=a; ++i) {
cin>>x;
G[cnt][x].push_back(i);
}
for(int i=1; i<=n; ++i) {
cin>>x;
l[cnt][x]=r[cnt][x]=i;
}
dfs(cnt,1);
}
}
int main() {
read();
for(int i=1;i<=n;++i)
for(int j=i;j<=n;++j)
f[j]=max(f[j],f[i-1]+max(val[0][i][j],val[1][i][j]));
cout<<f[n];
return 0;
}

推荐看看这篇博客传送门

最新文章

  1. 虚拟机体验之 VirtualBox 篇 —— 性能强大的经典架构
  2. yii2中如何使用modal弹窗之基本使用
  3. DataTable 的使用
  4. JS中的常量(基本数据类型)和内置对象
  5. SQL函数
  6. Java学习笔记之使用反射+泛型构建通用DAO
  7. Swift安装
  8. 解决:HttpClient导致应用出现过多Close_Wait的问题
  9. 绕过 &lt;?PHP exit(&#39;Access Denied&#39;); ?&gt; 限制
  10. [html] HTML结构的语义化
  11. Egret
  12. SPOJ #4 Transform the Expression
  13. @font-face 用字体画图标
  14. 【python自动化第六篇:面向对象】
  15. [开源]jquery-ajax-cache:快速优化页面ajax请求,使用localStorage缓存请求
  16. Struts2属性驱动与模型驱动
  17. webservice和.net remoting浅谈
  18. unity3d c# 产生真正的随机数
  19. iOS 微信消息拦截插件系列教程-(总目录)
  20. 团队作业8——第二次项目冲刺(Beta阶段)Day7——5.26

热门文章

  1. Java官方操纵byte数组的方式
  2. 05.用两个栈实现队列 Java
  3. Spring 自动注入,管理JavaBean
  4. 【黑马JavaSE】1.1JavaSE、环境变量、CMD使用、常量、变量、数据类型转换(自动/强制)、ASCII码表、Unicode万国码表
  5. HBuilder开发MUI web app溢出页面上下无法滚动问题
  6. shell脚本--监控java进程存活脚本
  7. JScript 对字符串、数组处理的常用方法
  8. Steps 步骤条
  9. 把java项目打包成jar包并可以直接运行【我】
  10. Sqlserver实现故障转移 — 加域(2)