(分别用$E_{T}$和$E_{G}$表示树和图的边集)

简单分析,可以发现题目即求排列$p_{i}$的数量,满足$\forall (x,y)\in E_{T},(p_{x},p_{y})\in E_{G}$(记为条件$A$)

定义$count(S)$为:序列$p_{i}$的数量(忽略排列的限制),满足条件$A$且$\forall 1\le i\le n,p_{i}\in S$

事实上,我们的答案即求$\sum_{S\subseteq [1,n]}(-1)^{n-|S|}f(S)$

证明可以考虑每一个满足条件$A$序列$p_{i}$的对答案的贡献:

1.若$p_{i}$是排列,显然仅有$S=[1,n]$时有贡献,且恰好为1

2.若$p_{i}$不为排列,令$T=\{a_{i}\}$其贡献即$\sum_{T\subseteq S\subseteq [1,n]}(-1)^{n-|S|}$,由于其不为排列,存在$1\le x\le n$且$x\notin T$,任取其中的一个$x$,考虑$x$是否存在不难发现两者恰好抵消,即贡献为0

综上,即仅有排列对答案有1的贡献,即得证

不妨暴力枚举$S$,考虑如何求$f(S)$:对树进行dp,用$f_{i,j}$表示以$i$为根的子树内且$p_{i}=j$的方案数,枚举儿子的值转移即可,复杂度为$o(n^{3})$

最终复杂度即$o(n^{3}2^{n})$,可以通过

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 20
4 #define ll long long
5 struct Edge{
6 int nex,to;
7 }edge[N<<1];
8 int E,n,m,x,y,head[N],vis[N][N];
9 ll ans,f[N][N];
10 void add(int x,int y){
11 edge[E].nex=head[x];
12 edge[E].to=y;
13 head[x]=E++;
14 }
15 void dfs(int k,int fa,int S){
16 for(int i=0;i<n;i++)
17 if (S&(1<<i))f[k][i]=1;
18 else f[k][i]=0;
19 for(int i=head[k];i!=-1;i=edge[i].nex)
20 if (edge[i].to!=fa){
21 dfs(edge[i].to,k,S);
22 for(int j=0;j<n;j++)
23 if (S&(1<<j)){
24 ll s=0;
25 for(int t=0;t<n;t++)
26 if (vis[j][t])s+=f[edge[i].to][t];
27 f[k][j]*=s;
28 }
29 }
30 }
31 int main(){
32 scanf("%d%d",&n,&m);
33 memset(head,-1,sizeof(head));
34 for(int i=1;i<=m;i++){
35 scanf("%d%d",&x,&y);
36 x--,y--;
37 vis[x][y]=vis[y][x]=1;
38 }
39 for(int i=1;i<n;i++){
40 scanf("%d%d",&x,&y);
41 x--,y--;
42 add(x,y);
43 add(y,x);
44 }
45 for(int i=0;i<(1<<n);i++){
46 dfs(0,0,i);
47 ll s=0;
48 for(int j=0;j<n;j++)s+=f[0][j];
49 for(int j=0;j<n;j++)
50 if (i&(1<<j))s*=-1;
51 ans+=s;
52 }
53 if (n&1)ans*=-1;
54 printf("%lld",ans);
55 }

[loj2091]小星星的更多相关文章

  1. 「LOJ2091」「ZJOI2016」小星星 容斥+DP

    题目描述 小 Y 是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有\(n\)颗小星星,用 \(m\)条彩色的细线串了起来,每条细线连着两颗小星星.有一天她发现,她的饰品被破坏了,很多细线都被拆掉 ...

  2. loj2091 「ZJOI2016」小星星

    ref 总的来说,就是 容斥转化为点对应到点集问题. 树形 dp 解决转化后的问题. #include <iostream> #include <cstring> #inclu ...

  3. bzoj4455 & loj2091 [Zjoi2016]小星星 容斥原理+树形DP(+状压DP?)

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4455 https://loj.ac/problem/2091 题解 很不错的一道题.(不过在当 ...

  4. BZOJ4455: [Zjoi2016]小星星

    Description 小Y是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有n颗小星星,用m条彩色的细线串了起来,每条细 线连着两颗小星星.有一天她发现,她的饰品被破坏了,很多细线都被拆掉了.这 ...

  5. JS对象实现随机满天小星星实例

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. 【BZOJ-4455】小星星 容斥 + 树形DP

    4455: [Zjoi2016]小星星 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 204  Solved: 137[Submit][Status] ...

  7. 小星星的php

    大家好,我是小星星,最近新学的php,我迫不及待要跟大家分享了!!come on!一起来看小星星的世界 先为大家介绍php基础 首先我们来看看什么叫php: PHP(外文名:PHP: Hypertex ...

  8. BZOJ 4455: [Zjoi2016]小星星 [容斥原理 树形DP]

    4455: [Zjoi2016]小星星 题意:一个图删掉一些边形成一棵树,告诉你图和树的样子,求让图上的点和树上的点对应起来有多少方案 看了很多题解又想了一段时间,感觉题解都没有很深入,现在大致有了自 ...

  9. [ZJOI2016]小星星

    题目描述 小Y是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有n颗小星星,用m条彩色的细线串了起来,每条细线连着两颗小星星. 有一天她发现,她的饰品被破坏了,很多细线都被拆掉了.这个饰品只剩下了 ...

随机推荐

  1. kvm安装window系统及使用NFS动态迁移

    验证是否开启虚拟化 # grep -E 'svm|vmx' /proc/cpuinfo - vmx is for Intel processors - svm is for AMD processor ...

  2. 2021.2.23--vj补题

    B - B CodeForces - 699B 题目: You are given a description of a depot. It is a rectangular checkered fi ...

  3. leetcode 5/300 最长回文子串 py

    目录 题目说明 方法一:动态规划--状态转移方程 方法二:优化中心扩展算法 题目说明 要看明白求得是什么,最长回文字串是指例如cababa中ababa是最长的,不是求回文的部分aba 方法一:动态规划 ...

  4. CentOS 文件管理

    目录 目录管理 目录结构 切换目录 查看目录 创建目录 复制目录 剪切目录 删除目录 文件管理 查看文件 创建文件 复制文件 剪切文件 删除文件 创建链接 目录管理 目录也是一种文件. 蓝色目录,绿色 ...

  5. Scrum Meeting 16

    第16次例会报告 日期:2021年06月11日 会议主要内容概述: 最后一次例会 一.进度情况 我们采用日报的形式记录每个人的具体进度,链接Home · Wiki,如下记录仅为保证公开性: 组员 负责 ...

  6. UltraSoft - Alpha - Scrum Meeting 3

    Date: Apr 15th, 2020. 会议内容为 贡献分确定与进度汇报. Scrum 情况汇报 进度情况 组员 负责 昨日进度 后两日任务 CookieLau PM.后端 学习前后端分离技术的项 ...

  7. 【二食堂】Alpha- 发布声明

    MarkTexting Alpha版本发布声明 今日我们的MarkTexting正式上线了! 功能介绍 我们实现了一个简单的文本标注生成知识图谱的网站,在Alpha阶段,我们实现的功能有: 登陆注册 ...

  8. gson中TypeAdapter实现自定义序列化操作

    最近在项目中遇到这么一个问题,我们后台需要向前端返回一个 json 数据,就是将一个地理位置对象以json的格式返回到前台,但是这个地理位置对象中的经纬度是Double数据类型,项目中规定,如果经纬度 ...

  9. 期望 概率DP

    期望 \(x\) 的期望 \(E(x)\) 表示平均情况下 \(x\) 的值. 令 \(C\) 表示常数, \(X\) 和 \(Y\) 表示两个随机变量. \(E(C)=C\) \(E(C \time ...

  10. 解决boa网页操作出现502 Bad Gateway The CGI was not CGI/1.1 compliant的一种可能

    最近在把一套网页操作的接口从原来Android5.0上移植到Android7.0上. 客户端连接验证的时候主页显示异常 502 Bad Gateway The CGI was not CGI/1.1 ...