UOJ37 【清华集训2014】主旋律(SCC/DAG 状态压缩)

news/2024/12/26 10:47:42/文章来源:https://www.cnblogs.com/dcytrl/p/18632237

题意

求一个有向图 \(G\) 删掉一些边后原图仍强连通的方案数。模数 \(10^9+7\)

\(n\le 15,m\le n(n-1)\)

分析

SCC 状压有一个非常经典的“耳分解”:以 SCC 内两个点(可以相同)为起点、终点,找一条除两端外不在 SCC 内的链,然后加进去。但是这里要求方案数,耳分解失效,考虑别的方法。

我们知道,DAG 计数的经典方法是枚举点集的一个非空子集 \(T\),并钦定 \(T\) 是入度为 0 的点的集合。但是实际情况中 \(T\) 不一定是所有入度为 0 的点,所以考虑容斥,有结论是:\(T\) 的容斥系数为 \((-1)^{|T|-1}\)。设 \(f_S\) 表示 \(S\) 点集形成 DAG 的方案数,有转移 \(f_S\leftarrow (-1)^{|T|-1}2^{cnt_{T\rightarrow S/T}}f_{S/T}\)\(cnt_{S\rightarrow T}\) 表示起点在 \(S\) 终点在 \(T\) 的边数。

回到原问题,设 \(f_S\) 表示 \(S\) 点集形成 SCC 的方案数。正着做有点困难,设 \(edge_S\) 表示 \(S\) 内部的边数,考虑用 \(2^{edge_S}\) 减去不为 SCC 的方案数,后者相当于求缩点后形成 DAG 且点数 \(\ge 2\) 的方案数。套用 DAG 计数的经典做法,枚举入度为 \(0\) 的子集 \(T\)\(T\) 可以等于 \(S\),但此时 \(T\) 内部必须形成 \(\ge 2\) 个 SCC),那么 \(S/T\) 内部的以及 \(T\rightarrow S/T\) 的边任意连,\(S/T\rightarrow T\) 的边不能连,此时若 \(T\) 中 SCC 个数为 \(t\),那么容斥系数就是 \((-1)^{t-1}\),考虑设 \(g_S\) 表示 \(S\) 内形成若干个 SCC 的带容斥系数方案数,转移就是 \(g_S=-\sum_{T\subset S}g_{S-T}f_{T}\),为了避免算重,\(T\) 必须包含 \(S\) 的最低位。最终 DP 式子就是

\[f_S=2^{edge_S}-\sum_{T\subseteq}2^{edge_{S/T}+cnt_{T\rightarrow S-T}}g_{T} \]

最后别忘了把 \(g_S=g_S+f_S\)

const int maxn=16,maxm=1<<15,maxk=14348907,mod=1e9+7;
int n,m;
bool vis[maxn][maxn];
int e[maxn][maxm];
int edge[maxm];
int pw[maxn*maxn];
int f[maxm],g[maxm],h[maxk];
int to[maxm];
inline bool in(int S,int x){return (S>>(x-1))&1;}
inline void adder(int &x,int y){x+=y,x=x>=mod?x-mod:x;}
inline void suber(int &x,int y){x-=y,x=x<0?x+mod:x;}
inline void solve_the_problem(){n=rd(),m=rd();rep(i,1,m){int x=rd(),y=rd();vis[x][y]=1;}pw[0]=1;rep(i,1,m)pw[i]=pw[i-1]*2%mod;const int U=(1<<n)-1;rep(S,0,U)rep(i,1,n)if(in(S,i))rep(j,1,n)if(in(S,j))edge[S]+=vis[i][j];rep(i,1,n)rep(S,0,U)rep(j,1,n)if(in(S,j))e[i][S]+=vis[i][j];rep(S,0,U)rep(i,1,n)to[S]=to[S]*3+in(S,i);rep(S,1,U){int p=__builtin_ctz(S),S0=S^(1<<p),S1=U^S;for(int T=S1;T;T=(T-1)&S1){h[to[S|T]+to[S]]=h[to[S0|T]+to[S0]]+e[p+1][T];}}rep(S,0,U)f[S]=pw[edge[S]];rep(S,1,U){int p=__builtin_ctz(S);for(int T=(S-1)&S;T;T=(T-1)&S)if((T>>p)&1){suber(g[S],g[S^T]*f[T]%mod);}for(int T=S;T;T=(T-1)&S){suber(f[S],pw[edge[S^T]+h[to[S]+to[T]]]*g[T]%mod);}adder(g[S],f[S]);}write(f[U]);
}

复杂度 \(O(3^n+2^nn^2)\)

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

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

相关文章

系统攻防-WindowsLinux远程探针本地自检任意代码执行权限提升入口点

Windows&Linux&远程探针&本地自检&任意代码执行&权限提升&入口点知识点: 1、远程漏扫-Nessus&Nexpose&Goby 2、本地漏扫(提权)-Wesng&Tiquan&Suggester 3、利用场景-远程利用&本地利用&利用条件一、演示案例-操作系统-远程漏…

新能源汽车门店管理:项目管理工具的高效运用策略

使用项目管理工具进行新能源汽车门店管理可以显著提高门店的运营效率和团队协作能力。通过明确项目目标和需求、选择合适的项目管理工具、实施项目管理以及持续优化与改进等步骤,新能源汽车门店可以更好地应对市场变化,提升竞争力。使用项目管理工具进行新能源汽车门店管理,…

C5GAME 游戏饰品交易平台借助 RocketMQ Serverless 保障千万级玩家流畅体验

C5GAME 通过采用云消息队列 RocketMQ 版 Serverless 系列,有效解决了现有架构中存在的性能瓶颈,极大增强了交易系统的灵活性和稳定性,有效实现了流量的削峰填谷,显著提升了整体运维效率,确保了千万级玩家能够享受到流畅的游戏交易体验。作者:邹星宇、刘尧 C5GAME:安全便…

SQL语言1-MySQL

1. SQL语言 1.1 关系型数据库的常见组件数据库:database 表的集合,物理上表现为一个目录 表:table,行:row 列:column 索引:index 视图:view,虚拟的表 存储过程:procedure 存储函数:function 触发器:trigger 事件调度器:event scheduler,任务计划 用户:user 权限…

虚引用

当被应用的强引用失去后,强引用关联的这个引用也就是虚引用相关的分配就会被回收以ThreadLocal<T>为例1.进行塞值 public void set(T value) { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) { …

容器环境的MySQL、canal、Elasticsearch数据同步测试

回顾一次容器环境的MySQL、canal、Elasticsearch数据同步 MySQL和Elasticsearch安装初始化就不展示了,版本如下:sql表关键字段如下: CREATE TABLE `fault_code` (`title` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,`description` varchar(512) CHARACTER SET utf8mb…

从全球到本地:跨境电商如何提升供应链管理效率

一、引言 随着全球化的推进与互联网技术的飞速发展,跨境电商已成为全球贸易的重要组成部分。跨境电商平台通过缩短国际贸易的链条,打破了传统贸易壁垒,使消费者能够方便快捷地购买来自世界各地的商品。然而,跨境电商的成功不仅仅依赖于商品的丰富性和价格竞争力,背后更为复…

违规停放智能监测摄像机

违规停放智能监测摄像机结合高清晰度摄像功能和智能识别算法,可以对违规停放行为进行准确识别和监测。这种设备可根据设定的监测区域和参数,自动识别车辆停放位置和停放时间,一旦发现有车辆违停停放,系统将立即发送警报通知相关部门及时处理。通过这种方式,可以及时发现、…

破解跨境电商的竞争难题:高效市场竞争管理的核心要素

一、引言 随着全球化进程的加速和互联网技术的快速发展,跨境电商成为了全球贸易的新兴力量。跨境电商平台通过打破国界和时间的限制,为消费者和商家提供了更便捷、更高效的购物和销售渠道。然而,随着这一市场的逐步成熟,平台之间的竞争愈加激烈,如何在这样的竞争中脱颖而出…

MIT、OpenAI等震撼力作:AI首次自主发现人工生命!人类窥见上帝造物

就在刚刚,由Transformer八子创立的Sakana AI,联合来自MIT、OpenAI、瑞士AI实验室IDSIA等机构的研究人员,提出了「自动搜索人工生命」的新算法!论文地址:https://arxiv.org/abs/2412.17799 言归正传,ALife,即「人工生命」,是一门跨学科研究,旨在通过模拟生命的行为、特…

AI基坑监测识别摄像机

AI基坑监测识别摄像机是一种利用人工智能技术进行基坑监测的智能设备,其作用是监测基坑工程施工过程中的变化,并识别潜在的风险因素,以提供准确数据和及时预警,确保基坑工程的安全进行。这种摄像机通过高清摄像头实时捕捉基坑工程的图像,然后利用AI算法对基坑的土体稳定性…