[Contest20180328]同构

我们先把两棵树的所有节点的儿子排序,然后dfs,记录访问的深度序列
然后可以发现题目中的两个操作都只会在深度序列中删掉一位,不会对其他位有影响(自己画画图就知道了)
对于一个深度序列$d_{1\cdots n}$,如果对任意$1\leq i\lt n$满足$d_i+1\geq d_{i+1}$,那么我们可以把这棵树的形态还原出来(直接模拟dfs的过程即可)
对于这道题,求出两棵树的深度序列之后,它们的LCS一定满足以上条件(如果有$d_i+1\lt d_{i+1}$,那么显然这两位中间还有点,也就是说这不是LCS),而注意到我们在原深度序列中删点可以得到这个LCS,所以LCS就是最终两棵树变到同一棵树时的深度序列
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
vectorson1[5010],son2[5010];
int d1[5010],d2[5010],f[5010][5010],M;
void dfs(int x,int d,vector*son,int*p){
M++;
p[M]=d;
for(int v:son[x])dfs(v,d+1,son,p);
}
int main(){
int n1,n2,i,j;
scanf("%d",&n1);
for(i=2;i<=n1;i++){
scanf("%d",&j);
son1[j].push_back(i);
}
for(i=1;i<=n1;i++)sort(son1[i].begin(),son1[i].end());
scanf("%d",&n2);
for(i=2;i<=n2;i++){
scanf("%d",&j);
son2[j].push_back(i);
}
for(i=1;i<=n2;i++)sort(son2[i].begin(),son2[i].end());
M=0;
dfs(1,1,son1,d1);
M=0;
dfs(1,1,son2,d2);
for(i=1;i<=n1;i++){
for(j=1;j<=n2;j++){
if(d1[i]==d2[j])
f[i][j]=f[i-1][j-1]+1;
else
f[i][j]=max(f[i][j-1],f[i-1][j]);
}
}
printf("%d",n1+n2-(f[n1][n2]<<1));
}
[Contest20180328]同构的更多相关文章
- [LeetCode] Isomorphic Strings 同构字符串
Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the chara ...
- 60阶单群同构于A5的证明
设$G$是$60$阶的单群,我们来证明他同构于$A_5$,一个比较直观地思路是考虑群表示$\phi:G\to S(\Sigma)$,由同态基本定理得到$$G/{\rm Ker}\phi \simeq ...
- 03-树1 树的同构 (C语言链表实现)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h& ...
- PAT 03-树1 树的同构 (25分)
给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是"同构"的.例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A.B.G的左右孩子互换后 ...
- React同构直出原理浅析
通常,当客户端请求一个包含React组件页面的时候,服务端首先响应输出这个页面,客户端和服务端有了第一次交互.然后,如果加载组件的过程需要向服务端发出Ajax请求等,客户端和服务端又进行了一次交互,这 ...
- BZOJ 4337: BJOI2015 树的同构 树hash
4337: BJOI2015 树的同构 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4337 Description 树是一种很常见的数 ...
- SDUT 3340 数据结构实验之二叉树一:树的同构
数据结构实验之二叉树一:树的同构 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 给定两棵树 ...
- react服务端/客户端,同构代码心得
FKP-REST是一套全栈javascript框架 react服务端/客户端,同构代码心得 作者:webkixi react服务端/客户端,同构代码心得 服务端,客户端同构一套代码,大前端的梦想, ...
- [转] React同构思想
React比较吸引我的地方在于其客户端-服务端同构特性,服务端-客户端可复用组件,本文来简单介绍下这一架构思想. 出于篇幅原因,本文不会介绍React基础,所以,如果你还不清楚React的state/ ...
随机推荐
- 自定义CheckBox
自定义android的CheckBox按钮图形有两个步骤三种方式: 第一步: 新建Android XML文件,类型选Drawable,根结点选selector,放置在drawable文件夹内,指定各种 ...
- 近期对于windows服务的理解
1.APP.config的作用 在开发环境下时,根目录下的APP.config里面会填写一些参数之类的.当生成之后,这些参数将会被自动生成在*.exe文件目录中.如图: 其中,.exe文件为Win ...
- POJ1511:Invitation Cards(最短路)
Invitation Cards Time Limit: 8000MS Memory Limit: 262144K Total Submissions: 34743 Accepted: 114 ...
- xmlns:sys="clr-namespace:System;assembly=mscorlib" NOTE: System;与assembly中间不能有空格
xmlns:sys="clr-namespace:System;assembly=mscorlib" NOTE: System;与assembly中间不能有空格 否则报错, Er ...
- CSS3学习笔记之径向展开菜单
效果截图: HTML代码: <div class="menu-wrap"> <nav> <a href="" class=&quo ...
- 【uva11855-求长度为1到n的相同子串出现的次数】sam
题意:求长度为1到n的相同子串出现的次数,输到小于2为止. 题解: 用sam做. 建机,算right集合,然后用r[i]更新长度为step[i]的子串出现次数,然后ans[i]=maxx(ans[i] ...
- 【BZOJ2253】纸箱堆叠 [CDQ分治]
纸箱堆叠 Time Limit: 30 Sec Memory Limit: 256 MB[Submit][Status][Discuss] Description P 工厂是一个生产纸箱的工厂. 纸 ...
- MySQL 进阶(待发布)
视图 存储过程 触发器 基本函数
- Windows 的GUID
GUID(全称:Globally Unique Identifier),是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中.在理想情况下,任何 ...
- HDU1068 (二分图最大匹配匈牙利算法)
Girls and Boys Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...