博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 4275 Color the Tree(树同构)
阅读量:7050 次
发布时间:2019-06-28

本文共 1571 字,大约阅读时间需要 5 分钟。

题目链接:

题意:给出一个n个节点的树,有m种颜色。问不同的染色方案有多少?

 

思路:本题首先要解决的就是对称的情况怎么办,找到树的中心,也就是找到树上的一条最长路,最长路为奇数,则中间一个节点作为根节点,否则,在中间增加一个节点作为根节点使得两边的最长路相等。然后就是树形DP,ans[u]表示以u为根节点的子树的总的染色方案,hash[u]存储以u为根节点的子树的结构。设u节点有k个子节点,v1,v2……vk,首先将子节点按照hash值排序,这样,同构的子树在排序后就会相邻,设有x个子树同构,则这x个子树总的染色方案为C(ans[v]+x-1,x)。接着就是将这些相乘就得到u节点的ans值,u节点的hash值由子节点的hash值Hash得到。

 

#include 
#include
#include
#include
using namespace std; struct node { int v,next; }; struct Node { __int64 hash,ans; }; const __int64 mod=1000000007; const __int64 P=10003; const __int64 Q=100000037; node edges[200005]; Node q[50005]; int head[50005],e,E,M,MM,C,f[50005],dp[50005],n; __int64 hash[100005],ans[100005],p[100005],son[50005]; void Add(int u,int v) { edges[e].v=v; edges[e].next=head[u]; head[u]=e++; } __int64 POW(__int64 a,__int64 b) { __int64 ans=1; while(b) { if(b&1) ans=(ans*a)%mod; a=(a*a)%mod; b>>=1; } return ans; } __int64 cal(int n,int m) { if(n==m) return 1; __int64 n1=1,n2=p[m],i; for(i=1;i<=m;i++) n1=n1*(n-i+1)%mod; return n1*POW(n2,mod-2)%mod; } int cmp(Node a,Node b) { return a.hash
m1) m2=m1,m1=t,f[u]=i; else if(t>m2) m2=t; } if(M
M+1) MM=edges[f[MM]].v; E=f[MM]; Add(MM,n+1); Add(n+1,MM); Add(edges[f[MM]].v,n+1); Add(n+1,edges[f[MM]].v); MM=n+1; ans[MM]=1; } else { E=0; while(dp[MM]*2>M) MM=edges[f[MM]].v; ans[MM]=C; } DFS1(MM,-1); printf("%I64d\n",ans[MM]); } return 0; }

  

 

转载地址:http://xnpol.baihongyu.com/

你可能感兴趣的文章
Linux下用Java获取本机IP
查看>>
Eclipse的Spring库导入
查看>>
velocity 判断 变量 是否不是空或empty
查看>>
获得数据库自动生成的主键
查看>>
Hibernate缓存机制
查看>>
【BZOJ】1415 [Noi2005]聪聪和可可 期望DP+记忆化搜索
查看>>
android 7.1 调用相机崩溃解决办法
查看>>
------第二节-----------------第二讲----单链表的基本操作---------
查看>>
delegate代理设计模式
查看>>
花10分钟搞懂开源框架吧 - 【NancyFx.Net】
查看>>
GridView(网格视图)+MotionEvent(触控事件)实现可以拖动排序的网格图
查看>>
显示/隐藏Mac下的隐藏文件
查看>>
POJ-3565 Ants 空间点对不相交匹配-最小权值匹配
查看>>
springmvc(一)
查看>>
Hibernate与 MyBatis的比较
查看>>
awk调用shell命令的两种方法:system与print
查看>>
谷歌开源第二代机器学习系统 TensorFlow
查看>>
juqery模板 Templates
查看>>
eclipse 自动创建web.xml
查看>>
十一.单表更新及多表更新
查看>>