【uoj#37/bzoj3812】[清华集训2014]主旋律 状压dp+容斥原理

题目描述

求一张有向图的强连通生成子图的数目对 $10^9+7$ 取模的结果。


题解

状压dp+容斥原理

设 $f[i]$ 表示点集 $i$ 强连通生成子图的数目,容易想到使用总方案数 $2^{sum[i]}$ 减去不为强连通图的方案数得到强连通图的方案数,其中 $sum[i]$ 表示点集 $i$ 中边的数目。

考虑什么样的图不是强连通图:缩点后入度为0的强连通分量对应的点集不是全集。

枚举这些入度为0的强连通分量对应的点集,由于无法保证只有这些点构成的入度为0的强连通分量,因此需要进一步容斥。推之可以发现容斥系数与这些点形成的强连通分量数目的奇偶性有关。

更具体来讲,形成奇数个强连通分量时容斥系数为正(即减去),形成偶数个强连通分量为负(即加上)。

设 $g[i]=i个点形成奇数个强连通分量的方案数-i个点形成偶数个强连通分量的方案数$ ,那么枚举 $i$ 中编号最小的点所在连通块 $i-j$ (即枚举剩下部分 $x$ 不与编号最小的点相连的强连通分量 $j$ ),则有 $g[i]=-\sum\limits_{j\subset x}f[i-j]·g[j]$ 。注意此时的 $g$ 不包含 $i$ 只形成一个强连通分量的情况,以便下面 $f$ 的容斥。

那么枚举钦定的入度为0的强连通分量 $j$ ,就有 $f$ 的转移:$f[i]=2^{sum[i]}-\sum\limits_{j\subset i}2^{sum[i]-w[j]}·g[j]$ ,其中 $w[j]$ 表示 $i$ 向 $j$ 连边的数目,表示钦定的点不能被连边,其它的随意连。

最后将只有一个强连通分量的方案 $f[i]$ 算进 $g[i]$ 。

答案就是 $f[2^n-1]$ 。

时间复杂度 $O(3^n)$ 

#include <cstdio>
#define N 32775
#define mod 1000000007
typedef long long ll;
int in[N] , out[N] , cnt[N] , sum[N] , w[N];
ll b[215] , f[N] , g[N];
void dfs(int i , int j)
{if(i & (j - 1)) dfs(i , i & (j - 1));w[j] = w[j - (j & -j)] + cnt[in[j & -j] & i];
}
int main()
{int n , m , i , j , x , y;scanf("%d%d" , &n , &m);b[0] = 1;for(i = 1 ; i <= m ; i ++ ){scanf("%d%d" , &x , &y) , x -- , y -- ;in[1 << y] |= 1 << x , out[1 << x] |= 1 << y;b[i] = b[i - 1] * 2 % mod;}for(i = 1 ; i < (1 << n) ; i ++ ){x = i - (i & -i) , cnt[i] = cnt[x] + 1 , sum[i] = sum[x] + cnt[in[i & -i] & i] + cnt[out[i & -i] & i] , f[i] = b[sum[i]];dfs(i , i);for(j = x ; j ; j = x & (j - 1)) g[i] = (g[i] - f[i ^ j] * g[j] % mod + mod) % mod;for(j = i ; j ; j = i & (j - 1)) f[i] = (f[i] - b[sum[i] - w[j]] * g[j] % mod + mod) % mod;g[i] = (g[i] + f[i]) % mod;}printf("%lld\n" , f[(1 << n) - 1]);return 0;
}

 

转载于:https://www.cnblogs.com/GXZlegend/p/8678089.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453113.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

交换机实现虚拟局域网

但由于它是逻辑地而不是物理地划分&#xff0c;所以同一个 VLAN内的各个工作站无须被放置在同一个物理空间里&#xff0c;即这些工作站不一定属于同一个物理LAN网段。一个VLAN内部的广播和单播流量都不会转发到其他 VLAN中&#xff0c;即使是两台计算机有着同样的网段&#xff…

产品与项目

产品和项目到底有什么区别&#xff0c;扩展开说&#xff0c;做产品和做项目最大的不同在哪里&#xff1f;产品经理和项目经理&#xff08;都是PM&#xff0c;有时候自己都搞不清说的哪一个&#xff09;职责的不同在哪里&#xff1f;一直困扰了我很长时间&#xff0c;直到2007年…

python斐波那契前20递归_算法python实现经典递归问题(汉诺塔, 斐波那契数列,阶乘)...

经典递归汉诺塔问题背景故事传说印度某间寺院有三根柱子&#xff0c;上串64个金盘。寺院里的僧侣依照一个古老的预言&#xff0c;以上述规则移动这些盘子&#xff1b;预言说当这些盘子移动完毕&#xff0c;世界就会灭亡。这个传说叫做梵天寺之塔问题(Tower of Brahma puzzle)。…

Hello This Cruel World!

第一天&#xff0c;已经成为了半年的OIer&#xff0c;仍然是个蒟蒻&#xff0c;希望以后能够变强&#xff01; 在OJ和博客的常用网名&#xff1a; TimeTraveller ->洛谷 VictoryCzt ->csdn,cnblog等 Czt Czttt czt ->OJ CrazyTea CrazyTeaMajor 游戏&#xff0c;QQ…

计算机系统的部件名称作用,电脑配件与每个配件作用详细完整的解释

电脑各配件的具体功能和特性说起来很长&#xff0c;先简单介绍一下。一台个人台式电脑的主要配件有&#xff1a;1.主板&#xff1a;也叫母板&#xff0c;是连接CPU、内存、AGP等电脑配件的最主要最基本的载体&#xff0c;主板的结构类型决定电脑各配件的结构和类型&#xff0c;…

信道效率以及信道的吞吐率

信道的效率即为信道的利用率&#xff0c;是指发送方在一个发送周期的时间内&#xff0c;有效的发送数据所需要的时间占整个发送周期的比率。 例如,发送方从开始发送数据&#xff0c;到收到第一个确认帧为止&#xff0c;称为一个周期&#xff0c;设为T。发送方在这个周期内共发…

jquery兄弟标签_js jquery获取当前元素的兄弟级 上一个 下一个元素

var chils s.childNodes; //得到s的全部子节点var pars.parentNode; //得到s的父节点var nss.nextSbiling; //获得s的下一个兄弟节点var pss.previousSbiling; //得到s的上一个兄弟节点var fcs.firstChild; //获得s的第一个子节点var lcs.lastChile; //获得s的最后一…

将本地代码备份到Github public repository

1. 在本地代码所在的文件夹中初始化&#xff0c;即打开powershell&#xff0c;输入下面命令 git init 此时本地文件夹中会出现一个.git的隐藏文件夹。 2. 然后将当前的文档commit&#xff0c;在本地commit之前可以先加一个.gitignore文件&#xff0c;忽略一些不必要的文件&…

推辞掉得不是你的工作,而是你的未来

在民营企业&#xff0c;年轻人无疑是主力&#xff0c;为什么年纪相仿&#xff0c;他是经理&#xff0c;我却是职员&#xff1f;相信对此愤恨不平的大有人在&#xff01;说什么人家后台硬、或者别人嘴巴甜&#xff0c;恨自己生不逢时、怨自己出身平凡的居多&#xff0c;相反检讨…

路考计算机系统评判,科目三智能考试有效解决路考舞弊行为

科目三智能考试是指通过在考试车辆上加装计算机、定位系统、传感器、音视频采集等设备实现对考试项目的自动化评判&#xff0c;代替原来人工评判&#xff0c;且记录考试过程的音视频资料&#xff0c;提供考试过程回放等相关功能。科目三自动化考试减少了人为因素对考试过程的干…

跟我一起玩Win32开发(20):浏览文件夹

最近忙于一些相当无聊的事情&#xff0c;还没忙完&#xff0c;不过&#xff0c;博客还是要写的&#xff0c;不然我头顶上会多了几块砖头。 在上一篇博文中&#xff0c;我们浏览了文件&#xff0c;今天我们也浏览一下目录&#xff0c;如何&#xff1f; 浏览目录我们同样有两个规…

什么材料反射热量好_封阳台用什么材料好,封阳台用什么玻璃好

展开全部阳台是建e68a8462616964757a686964616f31333433663065筑物室内的扩张&#xff0c;是居住者吸取新鲜空气、晒各种衣物、放置盆栽的场地方&#xff0c;其装修需要顾及实用更要注重美观问题。封阳台的优点1、具有保暖等的作用。阳台封闭后&#xff0c;多了一层抵挡尘埃和噪…

k8s实战之从私有仓库拉取镜像 - kubernetes

1、实战目的 从私有docker仓库拉取镜像&#xff0c;部署pod。上一篇中&#xff0c;我们搭建了私有的镜像仓库&#xff0c;这一篇我们将与k8s结合实战使用私有仓库。 2、登录docker 为了完成本次实战&#xff0c;需要登录docker&#xff0c;如下&#xff1a; 3、为k8s集群创建Se…

李开复评价马斯克:他真正的目的是把人变成半机械人

本文来自AI新媒体量子位&#xff08;QbitAI&#xff09;李开复在昨日接受Quartz的采访时说&#xff0c;伊隆马斯克在用太阳能汽车和脑部医疗植入物做诱饵掩饰他真正的目的&#xff1a;改变从传统电力公司获得能源的方式&#xff0c;并且将人类变成半机械人。 △ 伊隆马斯克 李开…

《那些年啊,那些事——一个程序员的奋斗史》

段伏枥&#xff0c;一个瘦小&#xff0c;矮小&#xff0c;根本和“帅”这个字粘不上任何关系的普通人。名字的来源在于其多读了几年书的老爹&#xff0c;总抱着有一天要出书出名乃至于名流千古的美好理想&#xff0c;但可惜现实总是给予他无情的而又现实的打击&#xff0c;于是…

计算机机房安全风险防控规范,中心机房安全风险分析一览表

《中心机房安全风险分析一览表》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《中心机房安全风险分析一览表(6页珍藏版)》请在人人文库网上搜索。1、中心机房安全风险分析一览表组件构件丿元糸风险点物理环境 及保障物理环境场地场地选址不当场地安全措施不当自然灾害…

c语言的翻译叫什么_什么是编译器?什么是集成开发环境?

我们平时所说的程序&#xff0c;是指双击后就可以直接运行的程序&#xff0c;这样的程序被称为可执行程序&#xff08;Executable Program&#xff09;。在 Windows 下&#xff0c;可执行程序的后缀有 .exe 和 .com&#xff08;其中 .exe 比较常见&#xff09;&#xff1b;在类…