ATB213G 连通性II 学习笔记

news/2025/3/11 14:18:51/文章来源:https://www.cnblogs.com/OrinLoong/p/18764968

ATB213G 连通性·II 学习笔记

Luogu Link

题意简述

给定一张 \(n\)\(m\) 边的简单无向图 \(G\)。考虑删去任意自然数条边构成一个新图 \(G'\)。对于每个点 \(2\le k\le n\),求有多少张新图满足点 \(k\) 与点 \(1\) 连通。

\(n\le 17\)

做法解析

\(F_S\) 为只考虑点集 \(S\) 时连通子图的个数。这东西是好求的,正难则反,我们用所有方案数减去不连通子图的个数。对于求不连通子图的个数,我们钦定一个点 \(u\in S\),枚举 \(u\) 所在的连通块。则有柿子:\(F_S=2^{\text{ecnt}_S}-\sum_{u\in T \subset S} F_T-2^{\text{ecnt}_{S-T}}\)

那么当我们求出了所有 \(F_S\) 的值之后,答案 \(\text{ans}_k\) 等于什么呢?我们既然要求 \(k\)\(1\) 连通,那么我们沿用枚举所在连通块的点集的思想,枚举 \(1\)\(k\) 所在的连通块点集,即:\(\text{ans}_k=\sum_{\{1,k\}\subset S\subset \text{ALF}}F_S\times 2^{\text{ecnt}_{\text{ALF}-S}}\)

时间复杂度:\(n2^n+3^n\)

代码实现

代码很简单!

#include <bits/stdc++.h>
using namespace std;
using namespace obasic;
using namespace omodint;
using mint=M998;
const int MaxN=17,MaxNr=3e2,MaxA=1<<17;
int N,M,alf,X,Y,Gr[MaxN],lg2[MaxA],ecn[MaxA];
void addudge(int u,int v){Gr[u]|=(1<<v),Gr[v]|=(1<<u);}
int lowbit(int x){return x&(-x);}
mint pw2[MaxNr],f[MaxA],ans[MaxN];
int main(){readi(N),readi(M),alf=(1<<N)-1;for(int i=2;i<=alf;i<<=1)lg2[i]=lg2[i/2]+1;pw2[0]=1;for(int i=1;i<=M;i++)pw2[i]=pw2[i-1]*2;for(int i=1;i<=M;i++)readi(X),readi(Y),addudge(X-1,Y-1);for(int s=1;s<=alf;s++){int l=lowbit(s),u=lg2[l],t=s-l;ecn[s]=ecn[t];for(int i=0;i<N;i++)if((t&(1<<i))&&(Gr[u]&(1<<i)))ecn[s]++;}f[0]=1;for(int s=1;s<=alf;s++){int l=lowbit(s),u=lg2[l];f[s]=pw2[ecn[s]];for(int t=(s-1)&s;t;t=(t-1)&s){if(t&l)f[s]-=f[t]*pw2[ecn[s-t]];}}for(int s=2;s<=alf;s++){for(int i=1,c;i<N;i++){c=(1<<i)|1;if((s&c)==c)ans[i]+=f[s]*pw2[ecn[alf-s]];}}for(int i=1;i<N;i++)writi(miti(ans[i])),puts("");return 0;
}

反思总结

这道无向图连通性状压计数启示我们,正难则反和枚举所在连通块思想要记好!

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

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

相关文章

张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫

目录什么是 Selenium环境搭建与配置安装 Selenium下载浏览器驱动基础操作启动浏览器并访问网页定位网页元素通过 ID 定位通过 CSS 选择器定位通过 XPath 定位与元素交互提取数据交互操作设置等待时间切换页面执行 JavaScript 代码关闭浏览器进阶技巧使用 ActionChains 模拟用户…

DCDC电源模块

车载直流电源DCDC电源模块是一种电力电子设备,它能够在电动汽车或混动汽车的电气系统中,实现直流电源电压之间的升降转换,从而确保低压电电气系统在车辆运行过程中获得稳定且适当的电源供应。 车载直流电源DCDC电源模块是一种电力电子设备,它能够在电动汽车或混动汽车…

SpringSecurity5(1-快速入门)

Spring Security提供了简单而强大的安全机制,支持身份验证和授权。基本使用包括在Spring Boot应用中引入Spring Security依赖,配置HTTP安全规则,定义用户角色和权限。通过使用内存用户存储或集成数据库,可以实现基于表单登录、HTTP基本认证等多种认证方式,确保应用程序的安…

ASE9N20-ASEMI工业自动化专用ASE9N20

ASE9N20-ASEMI工业自动化专用ASE9N20编辑:ll 一、性能卓越,能效先锋 9N20 MOS 管最为人称道的便是它超低的导通电阻。在电路中,犹如为电流开辟了一条 “高速公路”,让电能得以高效传输,极大减少了因电阻产生的热损耗。这意味着无论是为便携设备供电的 DC - DC 转换器,还是…

LayerSkip: 使用自推测解码加速大模型推理

自推测解码是一种新颖的文本生成方法,它结合了推测解码 (Speculative Decoding) 的优势和大语言模型 (LLM) 的提前退出 (Early Exit) 机制。该方法出自论文 LayerSkip: Enabling Early-Exit Inference and Self-Speculative Decoding。它通过使用 同一个模型 的早期层来生成候…

2025年我用 Compose 写了一个 Todo App

标题党嫌疑犯实锤 序言 从2月12日到3月4日这整整三周时间里,我从零开始又学习了一次 Compose。 为什么说又,是因为这已经是我第二次学习这套课程了。 故事从 4 年前说起,2021 年在意外获悉扔物线朱凯老师准备发布一套名为 Compose 的新课程,意识到这是 Android 未来的方向,…

Ubuntu设置静态IP——NetworkManager方式

1、直接在系统界面上设置静态IP的方式,不再赘述 2、命令行方式查看已经有哪些工具#查看状态 sudo systemctl status Netplan sudo systemctl status NetworkManager sudo systemctl status systemd-networkd sudo systemctl status NetworkManager出现Active,说明电脑已经安装…

《Quick Start Kubernetes》读后感

一、 为什么选择这本书? 面试的时候经常被问到 kubernetes(下称 k8s),所以打算学习 k8s。看到《Quick Start Kubernetes》的作者对自己所写的书持续地更新,被这种认真打动了,外加这本书只有100多页,所以选择了这本书作为入门 k8s 的教材。 二、这本书写了什么? 这本书介绍…

正交实验法python实现

1.等水平正交表 每个条件下的种类一样多 例1: 这是一个7因子2状态 列表里内部每一个[]表示一个因子,然后每个因子都有2种类型 #7因子2状态 from allpairspy import AllPairs parameters = [["Chrome", "Firefox"],#因子1有"Chrome"或"Fir…

如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统

本文将提供一个详细的示例,展示如何调用 DeepSeek 的自然语言处理 API 接口。我们将以情感分析为例,演示如何发送请求、处理响应以及处理可能的错误。我在业余时间开发了一款自己的独立产品:升讯威在线客服与营销系统。陆陆续续开发了几年,从一开始的偶有用户尝试,到如今线…