博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P3349 [ZJOI2016]小星星
阅读量:6223 次
发布时间:2019-06-21

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

题意都需要看题解才能明白我是不是已经废了

题意就是求一个从树\(S\)到图\(T\)的映射,满足若树上的两个点有边,则它们映射在图中的两个点也连有边,且不能有多个点映射到同一个点

我们先不考虑不能有多个点映射到同一个点的限制。设\(dp[u][i]\)表示树上的\(u\)映射为图中的点\(i\)时,\(u\)的子树中合法的方案数。那么只要做一个树形dp即可,复杂度为\(O(n^3)\)

然而如果我们只是按上面那样去做,有可能会产生多个点映射到同一个点的情况。那么我们就要减去图中被映射的点只有\(n-1\)个时的情况。我们可以暴力枚举被剩下的\(n-1\)个点是哪几个,然后再做一次树形dp即可。发现有多减了\(n-2\)个点的情况...

于是不难看出这个其实就是容斥了,枚举图中被选的点,容斥处理即可

//minamoto#include
#define ll long long#define rint register intusing namespace std;#define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)char buf[1<<21],*p1=buf,*p2=buf;int read(){ int res,f=1;char ch; while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1); for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0'); return res*f;}const int N=25;ll dp[N][N],res=0;bool vis[N];int ban[N],mp[N][N];struct eg{int nx,v;}e[N];int head[N],tot,n,m;inline void add(int u,int v){e[++tot]={head[u],v},head[u]=tot;}void dfs(int u){ vis[u]=1;for(rint i=1;i<=n;++i)dp[u][i]=1; for(rint i=head[u];i;i=e[i].nx){ int v=e[i].v;if(vis[v])continue;dfs(v); for(rint j=1;j<=n;++j)if(ban[j]){ ll sum=0; for(rint k=1;k<=n;++k)if(ban[k])sum+=dp[v][k]*mp[k][j]; dp[u][j]*=sum; }else dp[u][j]=0; }}int main(){// freopen("testdata.in","r",stdin); n=read(),m=read(); for(rint i=1,u,v;i<=m;++i)u=read(),v=read(),mp[u][v]=mp[v][u]=1; for(rint i=1,u,v;i
>=1,++i)ban[i]=p&1,sz-=p&1; dfs(1);ll ret=0; for(rint i=1;i<=n;++i)ret+=dp[1][i]; sz&1?res-=ret:res+=ret; }printf("%lld\n",res);return 0;}

转载于:https://www.cnblogs.com/bztMinamoto/p/9979627.html

你可能感兴趣的文章
SQL 总结
查看>>
我所理解的JVM(二):类加载机制
查看>>
sql语句查询某表里是否存在重复数据
查看>>
linux shell
查看>>
数据库连接及操作实例
查看>>
【Java】jdk8 Optional 的正确姿势
查看>>
云栖科技评论第56期:莫忧AI泡沫 相信AI兴邦
查看>>
超级有用的15个mysqlbinlog命令
查看>>
数据库之间转移数据
查看>>
PHP连接Mysql常用API(mysql,mysqli,pdo)区别与联系
查看>>
java中的CAS
查看>>
简单的markdown在线解析服务
查看>>
Linux基础(day44)
查看>>
Git 分支创建及使用
查看>>
MariaDB安装, Apache安装
查看>>
多线程三分钟就可以入个门了!
查看>>
从道法术三个层面理解区块链:术
查看>>
elasticsearch入门使用
查看>>
数据结构与算法4
查看>>
tomcat去掉项目名称
查看>>