[JZOJ4272] [NOIP2015模拟10.28B组] 序章-弗兰德的秘密 解题报告(树形DP)

Description

背景介绍
弗兰德,我不知道这个地方对我意味着什么。这里是一切开始的地方。3年前,还是个什么都没见过的少年,来到弗兰德的树下,走进了封闭的密室,扭动的封尘已久机关,在石板上知道了这个世界最角落的最阴暗的东西。那种事情,从未忘怀,从未动摇,我还记得,那一天,我,里修,第一次拔起了剑……

弗兰德的密室里,机关上方画着两棵树的字样,机关下方是一个有数字的刻度……
弗兰德最高的两棵树,只要知道两棵树的共同的相似度就行了……
给定两棵有根树,可以任意删除两棵树上的节点(删除一棵节点必须保证该节点的子树内的所有节点也必须要被删除,换一种说法,删除后的树必须联通并形成一棵树,且根节点不能被删除),使得删除后的两棵树同构,这两棵树有一个共同大小,即树的size,最大化同构的树的size即为机关的答案……

注:两棵同构的树要满足以下条件:
1、两棵树节点个数相等。
2、两棵树的以根节点的儿子为根子树对应同构。如下图,为两棵同构的有根树。
如下图,为两棵同构的有根树。
aaarticlea/png;base64,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" alt="" border="0" hspace="0" vspace="0" />

 

Input

一行两个整数n,m分别表示两棵有根树的大小。
以下n-1行描述第一棵树,每行两个数x,y表示x号节点是y号节点父亲。
以下m-1行描述第二棵树,每行两个数x,y表示x号节点是y号节点父亲。
数据保证两棵树的1号节点均为根。

Output

一行一个数,表示两棵树的相似度(删除后最大化的同构树的大小)。
 

Sample Input

3 3
1 2
1 3
1 2
2 3

Sample Output

2
【样例解释】
第一棵树可以保留1号节点和2号节点删除3号节点,也可以保留1号节点与3号节点删除2号节点,
第二棵树保留1号节点和2号节点删除3号节点。
剩下的树同构,树的节点个数均为2。

Data Constraint

对于30%的数据,1 ≤ n ≤10
对于60%的数据,1 ≤ n ≤ 100
对于100%的数据,1 ≤ n ≤ 1000数据保证两棵树上每个节点的度均不超过5。

题意:给定两棵树,任意删除边,求让它们同构的方案中保留最多节点的方案保留的节点数

同构的定义  1、两棵树节点个数相等。 2、两棵树的以根节点的儿子为根子树对应同构。如下图,为两棵同构的有根树。

[JZOJ4272] [NOIP2015模拟10.28B组] 序章-弗兰德的秘密 解题报告(树形DP)

题解:

这是一道比较裸的 DP 题,相信大家都看出来了。这题的难 点主要是状态的转移。

30%:直接上暴力。枚举两颗树中保留哪些节点,求最大的同构。

100%:树型 DP。设状态F[x][y]表示,第一棵树中x节点与第二棵树中的y节点作为根节点匹配的最大同构。例如,上图中所示的F[x][y] = 3。现在转移方程就很显然了: F[x][y]=Max{F[x的儿子][y的儿子]}+1 ; 这里需要枚举x的那些儿子与y的哪些儿子匹配,这部分时间复杂度O(5!) ; 最后答案就是F[1][1]. 总的时间复杂度为O(5!*n2)

也就是说,在状态转移的时候,我们要让x的子节点与y的子节点匹配。在程序中具体的实现就是先dfs树1,枚举x的子节点,然后再处理树2,一个个枚举y的子节点,搜索改变匹配序列就好。

注意到度数最大就是5,所以说不需要担心时间问题。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std; const int maxn=+;
int n,m,x,y;
int f[maxn][maxn],vis[maxn];
vector <int> son1[maxn];
vector <int> son2[maxn];
inline int read()
{
char ch=getchar();
int s=,f=;
while (!(ch>=''&&ch<='')) {if (ch=='-') f=-;ch=getchar();}
while (ch>=''&&ch<='') {s=(s<<)+(s<<)+ch-'';ch=getchar();}
return s*f;
}
void dfs1(int k,int s)
{
if (k>son1[x].size()) {f[x][y]=max(f[x][y],s);return;}//当点x的孩子访问完时,是时候返回值了
dfs1(k+,s);
bool flag=true;
for (int j=;j<son2[y].size();j++)
if (!vis[j])
{
vis[j]=;
flag=false;
dfs1(k+,s+f[son1[x][k-]][son2[y][j]]);//加上子节点的最大同构值
vis[j]=;
}
if (flag) f[x][y]=max(f[x][y],s);
}
void dfs(int k)
{
if (!son1[k].size())//当k节点没有孩子时
{
for (int i=;i<=m;i++)
f[k][i]=;//只有k节点一个可以同构
return;
}
for (int i=;i<son1[k].size();i++)
dfs(son1[k][i]);
for (int i=;i<=m;i++)
{
if (!son2[i].size()) f[k][i]=;
else
{
x=k;y=i;
dfs1(,);
f[k][i]++;//最后算上k节点一个
}
}
}
int main()
{
// freopen("frand.in","r",stdin);
// freopen("frand.out","w",stdout);
n=read();m=read();
for (int i=;i<n;i++)
{
int xx=read(),yy=read();
son1[xx].push_back(yy);
}
for (int i=;i<m;i++)
{
int xx=read(),yy=read();
son2[xx].push_back(yy);
}
dfs();
printf("%d\n",f[][]);
return ;
}
上一篇:nowcoder(牛客网)提高组模拟赛第四场 解题报告


下一篇:[jzoj 6093] [GDOI2019模拟2019.3.30] 星辰大海 解题报告 (半平面交)