[ABC213G] Connectivity 2

AtCoder Beginner Contest 213G - Connectivity 2(状压dp神仙题) LINK 题意 给定简单无向图 G=(V,E)G=(V,E)G=(V,E),点的编号从111到∣V∣=n|V|=n∣V∣=n.对于k=2..nk=2..nk=2..n,求 H=(V,E′⊆E)H=(V,E′⊆E)H=(V,E′⊆E) 的个数,使得 111 与 kkk 连通。 n≤17,m<=n∗(n−1)2n≤17,m<=\frac{n*(n-1)}{2}n≤17,m<=2n∗(n−1)​。 考虑最后图的状态,点111和点kkk处于同一个连通块,这个连通块到其他点没有边 定义全集U=(1 阅读详情

题目

引

幸亏状压DP的数据范围明显,不然自己估计想不出来

解法

先考虑答案如何计算,比如计算点 k k k的答案,可以枚举包含 1 , k 1,k 1,k 的联通子图,然后每一个联通子图的方案数乘上无关的边就行。
形式化地, 设 G G G 为全图的点集 , S S S 为 G G G 的一个子图, f S f_{S} fS​ 表示 S S S 的联通子图的方案数, g S g_{S} gS​ 为S的子图数,那我们有:
a n s k = ∑ { 1 , k } ∈ S f S ∗ g ∁ G S ans_k=\sum_{\{1,k\}\in S} f_{S} *g_{\complement_{G}S } ansk​={1,k}∈S∑​fS​∗g∁G​S​
考虑计算 f , g f,g f,g 由于点很少,我们用二进制数表示状态,用 状压 D P DP DP 解决
g g g 用点的个数就可以求, 2 c n t S 2^{cnt_S} 2cntS​ , c n t S cnt_S cntS​ 是 S S S 的点数
f S = g S − ∑ 1 ∈ T ⊂ S f T ∗ g ∁ S T f_{S}=g_{S}-\sum_{1\in T\subset S} f_{T} *g_{\complement_{S}T} fS​=gS​−1∈T⊂S∑​fT​∗g∁S​T​

Code

#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=(1<<17)+7,mod=998244353;
int n,m;
ll g[N],f[N],t[205];
vector<int> G[N];
void Get_g() {
    g[0]=1;
    for(int mask=1;mask<(1<<n);mask++) {
        ll tmp=0;
        for(int i=0;i<n;i++) if(mask>>i&1) {
            for(int j:G[i+1]) 
                if(mask>>(j-1)&1) tmp++;
        } g[mask]=t[(tmp>>1)];
    }
}
void Get_f() {
    for(int mask=1;mask<(1<<n);mask+=2) {
        for(int sub=mask;sub;sub=(sub-1)&mask) if(sub &1 ){
            f[mask]=(f[mask] + f[sub] * g[mask^sub] %mod) %mod;
        } 
        f[mask]=((g[mask]-f[mask])%mod+mod)%mod;
    }
}
int main() {
    scanf("%d%d",&n,&m);
    t[0]=1; for(int i=1;i<=200;i++) t[i]=(t[i-1]<<1)%mod;
    for(int i=1,u,v;i<=m;i++) {
        scanf("%d%d",&u,&v) ;
        G[u].push_back(v),G[v].push_back(u);
    }
    Get_g(),Get_f();
    for(int i=2;i<=n;i++) {
        ll tmp=0;
        for(int mask=1;mask<(1<<n);mask+=2) 
            if(mask>>(i-1)&1) tmp=(tmp+f[mask]*g[((1<<n)-1)^mask] %mod) %mod;
        printf("%lld\n",tmp);
    }
}

TXL

【信息科学与工程学】【数据科学】数据科学领域——第三篇 数学08 几何学00总篇 编号英文名称中文名称简要说明/归属1Foundations of Geometry几何基础公理化方法, Hilbert《几何基础》2Euclidean Geometry (Synthetic)欧几里得几何(综合法)《几何原本》传统3Analytic Geometry解析几何坐标方法, Descartes, Fermat4Plane Geometry平面几何三角形、圆、共点共线等经典问题5Solid Geometry立体几何三维空间中的图形与度量6Non-Euclidean Geometry非欧几何平行公设不 阅读详情

相关推荐

5个4000比特大状态置换算法的设计与分析

下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。

HuangJinLong2的博客 350

新ABC后两题口胡计划

8说了,卷起来

lahlah的博客 719

初学者入门机器学习 (ML)的推荐教程

了解基本的机器学习概念并不难。有大量免费的在线博客文章、视频和编码教程可以引导您了解基础知识——从介绍性内容到常见应用程序,再到算法和应用技能。这篇文章总结了一些用于介绍 ML 的最佳免费选项。它按逻辑顺序排列,每个概念都建立在上一个概念的基础上。

u010542847的博客 4617

【学习笔记】图论状压 dp (abc 213)

G - Connectivity 2 题意:给你一张无向图,有 nnn 个顶点和 mmm 条边,存在 2m2^m2m 种不同的子图。求子图的数量满足 111 和 iii 联通。n<=17n<=17n<=17。 Solution: 状压 dp 神题。 111 和 iii 联通等价于 111 和 iii 在同一连通块中。 看到总状态数 2m2^m2m ,于是想到容斥,不过本题的条件是 至少存在一条 1->i 的路径 ,所以很遗憾暂时没有看到容斥的做法。 回到连通块的思考中。启发我们 枚

cqbzlydd的博客 503

STM32CubeMX——循迹传感器TCRT5000的使用

前言 人生如逆旅,我亦是行人。 ————苏轼《临江仙·送钱穆父》 一、介绍 TCRT5000描述:(带有晶体管输出的反射光学传感器) TCRT5000是一种反射式光学传感器,它包括一个红外发射器和一个3.5mm引线封装的光电晶体管,可阻挡可见光。还具有1mA 典型被测输出电流,2.5mm峰值工作距离,可应用传感与仪表,工业等行业。 TCRT5000具有紧凑的结构,其中发射光源和探测器布置在同一方向,通过使用来自物体的反射红外光束来感知物体的存在。工作波长为950毫米,探测器由光电晶体管组成

W_Oilpicture的博客 1万+

【PX4学习笔记】3. PX4 固件烧写(1 探索过程)

飞控型号:cube orange【PX4官方用户指南中关于cube orange的描述】 飞控载板型号:Mini Carrier Board【迷你载板说明文档】 固件安装参考:The Cube User Manual V1.0

【人工智障 | 计算鸡视觉 | 机器孩】 7676

ABC 213 题解

ABC 213 题解 这场比赛出的比较良心 QAQ A XOR 在 C++ 中代表异或,可以用 ^ 表示。 XOR aaa 和 bbb 异或是这样的: 首先,把 aaa 和 bbb 转换成 222 进制。高位补 000。 将它们逐位比较,相同的为假,不相同为真。 再转 101010 进制。 它的一个重要特性是:交换。 详细来说,是这样的: void swap(int &a, int &b){ a = a ^ b; b = a ^ b; a = a

weixin_56361327的博客 570

向华为学习——解读158页 华为敏捷园区网技术解决方案【附全文阅读】

华为敏捷园区网解决方案通过策略随行和体验随身技术,满足移动办公场景下的网络需求。该方案采用敏捷交换机和防火墙自动执行策略配置,实现用户身份认证与业务策略的无缝衔接,且策略配置与IP地址解耦,简化了管理流程。相比传统技术,该方案有效解决了用户分级、QoS保障、无线接入等关键问题,确保用户在移动过程中获得一致的网络体验。

cdfunlove的博客 379

软考架构师·教材版|05 图论:Dijkstra 最短路径与 AOE 关键路径

拿着一张“路口和过路费”的图,一轮一轮算出起点到每个路口的最短时间;再拿“项目工序图”正推倒推两遍,说出最快几天完工、哪些工序一天都拖不得。Dijkstra 与关键路径两道常考计算题,方法对了五分钟拿分。

weixin_46316564的博客 206

AI工具 | 每个打工人必备的15款人工智能超级工具

不过,还是有一些靠谱的人工智能平台,它们可不只是营销噱头。有些AI公司正试图改变游戏规则。人工智能工具让人们能够更聪明地工作,而不是更辛苦地劳作。如果你想知道未来有什么,那就来看看这10款人工智能工具吧,它们将彻底改变我们的工作方式。

Vampire_2017的博客 5万+

【C++PCL】点云文件读写

本文介绍 PCL 中 PCD 与 PLY 点云文件的读取、保存和字段检查,覆盖 PointXYZI、PointXYZRGB、ASCII、二进制及压缩二进制,并给出 C++11 实操代码与参数调试建议。

weixin_45196569的博客 42

[C++高阶数据结构·图论下] 最短路径:为什么“挑最小的”一定正确?

本文系统对比最小生成树与最短路径的核心差异,聚焦三类最短路算法:Dijkstra(非负权、贪心确认)、Bellman-Ford(可负权、反复松弛)、Floyd(全源、分层中转)。核心区别在于:MST 关注“连通所有点”的最小代价(边数固定),而最短路关注“两点间路径最短”(边数可变)。关键反直觉点是:负权对 MST 无害,却使 Dijkstra 失效——因“绕远更近”破坏贪心前提。算法本质反映三种处理不确定性的策略:确认式(Dijkstra)、迭代修正(Bellman-Ford)、分层逼近(Floyd)。强

Tairitsu_青云 516

《网络摄像机实战⑦:嵌入式端AWS KVS IoT SDK 库编译与测试全流程-君正/瑞芯微/全志(超详细指南)》

本文介绍了AWS音视频和物联网解决方案的核心组件与集成方法。主要内容包括:1)Amazon Kinesis Video Streams(KVS)提供的WebRTC托管服务,支持实时音视频流传输与双向交互;2)AWS IoT云服务实现设备连接与集成;3)详细说明了KVS WebRTC库的编译过程,包括源代码下载、CMake配置和依赖库生成;4)KVS Producer库的集成方法,重点阐述了存储空间调整和mbedtls版本适配等关键修改点。文章为开发者提供了AWS音视频和物联网服务的技术实现指南,特别针对嵌入

lvj_158的专栏 109

[C++高阶数据结构·图论上] 最小生成树:为什么“选边”和“选点”是两条路?

本文系统讲解最小生成树(MST)的核心思想与两大算法:Kruskal与Prim。强调MST目标是用最小权值总和连接所有顶点形成一棵树,而非单边最小。通过三条构造准则(用图中边、恰n-1条边、无环)统一框架。Kruskal按边贪心,依赖并查集判环,适合稀疏图;Prim按点扩张,利用割集特性天然避免成环,需起点,适合稠密图。两算法本质差异在于“判环”机制与数据结构选择,且与最短路径问题在连通性、负权处理上截然相反,需分篇厘清。

Tairitsu_青云 222

33、嵌入式系统中的内存操作与实时操作系统

本博客详细探讨了嵌入式系统中的内存操作和实时操作系统(RTOS)的基本原理及应用。内容涵盖C、C++和MicroPython三种语言下的SDRAM读写示例,并结合机器人真空吸尘器的实际应用说明内存的使用场景。此外,还介绍了RTOS的核心概念、组件及其工作机制,包括任务、事件、互斥锁、信号量、队列等,并以FreeRTOS和Mbed OS为例展示了RTOS的配置与使用方法。最后,通过常见问题和实践项目加深对嵌入式系统开发的理解。

zz67890的博客 145

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

数据结构之图论基础——从定义到常用术语

本文系统梳理图论核心知识点:从数据关系递进引出图的多对多特性,定义图为G=(V,E),强调顶点集非空;分类为有向/无向、有权/无权、连通/非连通;详解九大高频术语——完全图、稀疏/稠密图、权与网、邻接、度(含握手定理)、路径、子图、连通分量与生成树,并总结考研/面试必背公式与易错点,突出“边数计算”与“极大/极小”辨析,助力高效备考。

qq_34097230的博客 355

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

2026-11-02 hetao1733837 的刷题记录

难道说,就是说,我在倒着考虑的时候……但是,有不完全正确……如果吃一坨的话,真的有可能吧……那并不能保证是一个连通块,只能保证是一个子树……可能几亿天前就指出了我的这个问题……即,我们需要选一些位置,同时,在整个域当中,还有不选的,组合数乘起来,就做完了……如果是暴力,肯定就是限制个数自己枚举,然后做完了……有时候说话不好听,但是,真的帮助我了……也可以看出来,他很纯粹……特别是现在穿的比较厚,不方便仰头……求一下连通块的个数,区别不是很大……具体的,我们之前的暴力……还是说,别浮躁吧,有点毛燥了……

hetao1733837的博客 242

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 196

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 304

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 567

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 20

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 748

【算法拾光】模拟|外观数列 + 数青蛙

本文总结两道模拟题解法:外观数列通过迭代统计连续数字个数生成下一项,关键在于处理末尾字符;数青蛙则模拟青蛙叫声“croak”状态转移,维护各阶段青蛙数量,记录最大并发数并确保全部完成。共性在于严格遵循流程、细致处理边界与非法情况,锻炼字符串遍历与状态管理能力。

wuqingyigexiaoba的博客 367

牛客周赛165C题(前后缀性质,递推,排序,枚举)

题目大意:给定长度为 `n` 的数组,选择 `k ∈ [1,n]`,将前 `k` 个元素整体翻转,后面的元素不变。要求操作后的整个数组非递减,统计满足条件的 `k` 的数量。题目链接:https://ac.nowcoder.com/acm/contest/141721/C。时间复杂度:O(nlogn)

2501_94316951的博客 170

【数据结构-3】算法美学之降复杂度

在while循环的循环体内,首先用临时变量保存最后一个位置的数据,再通过for循环把所有元素往后移动一位,最后把tmp中保存的值放到下标为0的位置上去。方法二的思路是:创建新数组,让原数组中后k个数据移动到新数组中前面的位置,让原数组中前numsSize-k个数据移动到新数组中后面的位置,这。这段代码的思路是:三次逆置,第一次逆置前numsSize-k个数据,第二次逆置后k个数据,最后整体逆置。这篇博文分享一道解法不一的算法题,求解过程的目的在于降低算法的时间复杂度,题源力扣。,属于空间换时间的操作。

weixin_44218929的博客 82

算法61,判定是否为字符重排

两字符串能互为重排 ⇔。

sheshibenniaodan的博客 207
上一篇: [ABC180F] Unbranched
下一篇: [ABC118D] Match Matching
PocketSam
博客等级 码龄4年 24粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值