好好好。


我们设当前处理 \(i\) 的答案,那么最后的图就可以分成两个部分:\(1\) 所在的联通块和其他,根据乘法原理,答案就是它们二者方案的乘积。

设 \(f_s\) 表示集合 \(s\) 中所有点联通时图的情况数,\(g_s\) 表示集合 \(s\) 中所有点不一定联通时图的情况数,则有:

\[ans_i=\sum\limits_{\{1,i\}\in s}f_s\times g_{s'}
\]

其中 \(s'\) 表示 \(s\) 相对于 \(\{1,2,\dots,n\}\) 这个集合的补集。预处理 \(f_s,g_s\) 的情况下,该部分时间复杂度为 \(O(n2^n)\)。

那么现在就要求 \(f_s\) 和 \(g_s\) 了。

\(g_s\) 好说,设 \(dis_{i,j}\) 表示 \(i,j\) 间有没有边,则:

\[g_s=2^{\sum\limits_{i\ \in\ s}\sum\limits_{j\ \in\ s}dis_{i,j}}
\]

时间复杂度 \(O(n^22^n)\)。

考虑 \(f_s\)。我们暴力出奇迹,强制设一个点 \(v\in s\),将原图划分成两张图,一张有 \(v\),必须连通;一张没 \(v\),不要求连通。这种情况下,我们已经构造出了所有的不连通图情况,那么用 \(g_s\) 减去它,就是 \(f_s\) 的值,即:

\[f_s=g_s-\sum\limits_{t\subsetneq s} f_t\times g_{t'}
\]

由于要枚举子集,所以时间复杂度 \(O(3^n)\)。

总体时间复杂度 \(O(3^n+n^22^n)\)。

#include<bits/stdc++.h>
using namespace std;
const int N=20,M=1<<17;
const int p=998244353;
int n,dis[N][N],f[M];
int m,g[M],tw[N*N];
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n>>m,g[0]=1,tw[0]=1;
for(int i=1,u,v;i<=m;i++)
cin>>u>>v,dis[u][v]=1,tw[i]=tw[i-1]*2%p;
for(int s=1,cnt=0;s<(1<<n);s++,cnt=0){
for(int i=1;i<n;i++)
if((s>>(i-1))&1)
for(int j=n;j>i;j--)
cnt+=((s>>(j-1))&1)*dis[i][j];
f[s]=g[s]=tw[cnt];int v=log2(s)+1;
for(int t=(s&(s-1));t;t=((t-1)&s))
if((1<<(v-1))&t) f[s]=(f[s]-1ll*f[t]*g[s^t]%p+p)%p;
}for(int i=2,sum=0;i<=n;i++,sum=0){
for(int s=1;s<(1<<n);s+=2) if((s>>(i-1))&1)
sum=(sum+1ll*f[s]*g[((1<<n)-1)^s]%p)%p;
cout<<sum<<"\n";
}return 0;
}

[ABC213G] Connectivity 2 题解的更多相关文章

  1. CoderForces Round526 (A~E)题解

    A. The Fair Nut and Elevator time limit per test 1 second memory limit per test 256 megabytes input ...

  2. [题解] Codeforces Global Round 22 1738 A B C D E F 题解

    很久没rated打过cf的比赛了,这次打得还行,至少进前100了 点我看题 A. Glory Addicts 把类型0的数放进数组a里,类型1的数放进数组b里.如果\(|a|=|b|\),你可以把所有 ...

  3. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  4. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  5. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  6. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  7. Euler Tour Tree与dynamic connectivity

    Euler Tour Tree最大的优点就是可以方便的维护子树信息,这点LCT是做不到的.为什么要维护子树信息呢..?我们可以用来做fully dynamic connectivity(online) ...

  8. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  9. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  10. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

随机推荐

  1. 如何使用CRM管理不同发展阶段的医药代表

    通过医药代表,医生可以获得该产品的全面指导和信息.通过这一类医药代表的筛选,产品信息被有效的分类和翻译,变成了医生的"用药词典",给医生在使用该产品的过程中,提供了快捷准确的信息服 ...

  2. COSBrowser文件链接导出——爆赞的本地化管理功能

    前言 ​ 用过COSBrowser的小伙伴们应该都知道,COSBrowser的文件分享功能非常好用.但是,文件分享功能又有所局限,就是它只能分享单个文件,而文件夹分享,更有其因为部分必要因素,如安全性 ...

  3. Flutter GestureDector点击空白区域不响应

    GestureDector点击空白区域不响应 当GestureDector嵌套Container时,当Container子组件为Text时,点击空白区域不响应点击事件 GestureDetector( ...

  4. nginx-tengine-invalid IPv6 address in resolver-解析器中无效的IPv6地址

    问题描述:解析器中无效的IPv6地址 [root@dm ~]# nginx -t nginx: [emerg] invalid IPv6 address in resolver "[fe80 ...

  5. ArgoCD 简介

    fork https://github.com/DevopsChina/lab/tree/main/deploy/lab04-argocd 1. ArgoCD 简介 基于 kubernetes 的声明 ...

  6. The method's class, springfox.documentation.builders.RequestHandlerSelectors, is available from the following locations:

    *************************** APPLICATION FAILED TO START *************************** Description: An ...

  7. Qt音视频开发20-海康sdk本地播放

    一.前言 海康sdk中包含了MP4解码播放库,对应的API函数都是PlayM4开头的,顾名思义播放MP4,海康的视频默认可以保存成MP4文件,可以用通用的播放器来播放,这就是为啥前面好多篇文章讲到的各 ...

  8. 【Java 温故而知新系列】基础知识-02 数据基本类型

    1.Java基本数据类型 Java语言是强类型语言,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间. 基本数据类型 数值型:整数类型(byte,short,int,lon ...

  9. WSL设置中文、修改默认Root登陆、添加右键菜单

    1.设置中文 首先安装 aptitude 管理工具 #apt-get install aptitude 然后安装语言环境并进入语言环境设置. #aptitude install locales #dp ...

  10. Python语言中进程、线程、协程执行效率分析