[ZJOI 2016] bzoj 4455 小星星 - 容斥
最后要求一一对应,很难限制,相当于限制某些点没有被对应一个也不成立。但是其反面某些点不能被对应可以随便做,对这个容斥即可。可能需要稍微卡一下常数?
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define N 20
#define M N<<1
#define lint long long
using namespace std;
struct edges{int to,pre;
}e[M];int h[N],etop,con[N][N],a[N];
lint dp[N][N],tmp[N];int n,c;
inline int add_edge(int u,int v)
{ return e[++etop].to=v,e[etop].pre=h[u],h[u]=etop; }
int dfs(int x,int fa)
{for(int i=1;i<=c;i++) dp[x][a[i]]=1ll;for(int i=h[x],y;i;i=e[i].pre)if((y=e[i].to)^fa) dfs(y,x);for(int i=h[x],y;i;i=e[i].pre)if((y=e[i].to)^fa)rep(j,1,c){lint tmp=0ll;rep(k,1,c) if(con[a[j]][a[k]]) tmp+=dp[y][a[k]];dp[x][a[j]]*=tmp;}return 0;
}
lint calc(int n)
{int all=(1<<n)-1;lint ans=0ll;for(int i=0,s;i<=all;++i){c=0,s=n;for(int j=1;j<=n;++j)if((i>>(j-1))&1) a[++c]=j,s--;s=((s&1)?-1:1),dfs(1,0);for(int j=1;j<=c;++j) ans+=s*dp[1][a[j]];}return ans;
}
int main()
{int m;scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){int u,v;scanf("%d%d",&u,&v);con[u][v]=con[v][u]=true;}for(int i=1;i<n;i++){int u,v;scanf("%d%d",&u,&v);add_edge(u,v),add_edge(v,u);}return !printf("%lld\n",calc(n));
}
[ZJOI 2016] bzoj 4455 小星星 - 容斥相关推荐
- bzoj 4455: [Zjoi2016]小星星
链接 http://www.lydsy.com/JudgeOnline/problem.php?id=4455 dp+容斥题意大约是树上的点满足与图上的点一一对应并且图中两两有边,树中也两两有边,求满 ...
- bzoj 4455 [Zjoi2016]小星星 树形dp容斥
4455: [Zjoi2016]小星星 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 643 Solved: 391 [Submit][Statu ...
- [ZJOI 2016] 小星星
4455: [Zjoi2016]小星星 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 653 Solved: 400 [Submit][Statu ...
- 【容斥】[ZJOI2016] 小星星
题目描述 小Y是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有n颗小星星,用m条彩色的细线串了起来,每条细线连着两颗小星星.有一天她发现,她的饰品被破坏了,很多细线都被拆掉了.这个饰品只剩下了n ...
- 【BZOJ4455】小星星(动态规划,容斥)
题面 BZOJ 洛谷 Uoj 题解 题意说简单点就是给定一张nnn个点的图和一棵n" role="presentation">nnn个点的树,现在要让图和树之间的点 ...
- bzoj 4455: [Zjoi2016]小星星 树形dp+容斥原理
题意 给出一棵树和一个图,问有多少种方法把树的节点标号使得其在改图中至少有一棵生成树与原来的树是重构的. n<=17 分析 想到了容斥,但是没想到从哪里容斥... 显然题目给了两个限制,一个是原 ...
- 洛谷P3349:小星星(容斥dp)
解析 先安利一波洛谷上我介绍如何用暴力日过去的博客 现在开始务正业 考虑把dp记录状态的一维s去掉 这样单次转移复杂度变成n3n^3n3 但是这样显然会算多啊! 因为一个编号可能会用很多次 考虑容斥 ...
- P3349-[ZJOI2016]小星星【树形dp,容斥】
正题 题目链接:https://www.luogu.com.cn/problem/P3349 题目大意 nnn个点的一棵树,再给出一张图,树上每个点对应图上每个点后要求树上的边图上都有,求有多少种对应 ...
- bzoj 1042: [HAOI2008]硬币购物(dp+容斥)
1042: [HAOI2008]硬币购物 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2555 Solved: 1537 [Submit][St ...
最新文章
- aspen软件对电脑的要求_BIM软件对电脑配置的要求——Fuzor软件对电脑配置的要求...
- ibatis中如何调用出参为游标的存储过程
- 宝塔如何备份网站_学习织梦网站必需会的一件事:织梦网站数据备份
- 沉没成本(要不要买房)
- centos7 r语言安装_R 和 RStudio 的安装及 R Profile 的配置 amp; 初识 R 语言数据爬取...
- 什么是MSTP(多业务传输平台)?
- 前端学习(1977)vue之电商管理系统电商系统之按钮与文本框的切换
- Java中String为什么是final
- Centos7使用Docker创建Oracle11g
- WAMPServer使用
- Nginx + uWSGI + flask + socketio 部署解决方案
- et中计算机的快捷键,新手求助ET软件快捷键(求实用型的)
- 维修频谱分析仪多少钱?简单告诉你,频谱分析仪维修实例报价
- 有限单元法(The Finite Element Method)
- 传感器技术—压电式传感器(学习笔记八)
- ice helloworld java_安装ice-3.4.0,并运行demo里的hello world例子,java
- 【科普】TS文件格式:什么是TS?如何打开,编辑和转换它?
- Darknet框架的权重文件.weights类型转换为keras框架的权重文件类型.h5
- 吉首大学校赛 K	白山茶与红玫瑰 (线段树区间操作)
- h5跳转微信公众号文章,小程序,任意站跳转链接制作方法?