BZOJ4671: 异或图
$1 \leq s \leq 60$个$2 \leq n \leq 10$的图,定义图的异或是:如果一条边在两个图中出现次数和为1,那么异或后的图中存在这条边,否则不存在。问有多少图的集合满足异或后的图是连通图。
暂时自己推不动的题系列QAQ
容斥一发,枚举点集划分,然后强行让在不同点集的点不连边而同一点集内的点随意。如此一来,假如有一种真实的方案,它把图真真切切的变成了$m$个连通块,那么这种方案会被统计$\sum_{i=1}^m\begin{Bmatrix} m \\ i \end{Bmatrix}$次,就是,每次把分完的点集合再拿去分集合,然后会分到若干大集合,然后因为大集合里的点是乱连的,所以会算到这种情况。需要系数$f(i)$,满足$\sum_{i=1}^m\begin{Bmatrix} m \\ i \end{Bmatrix} f(i)=[m=1]$。
用斯特林数递推求这个系数当然没问题,但打表后可得$f(i)=(-1)^{i-1}(i-1)!$,简要证明:
$\sum_{i=1}^{m}\begin{Bmatrix} m\\ i\end{Bmatrix}(-1)^{i-1}(i-1)!$
$\\ =\sum_{i=1}^{m}(-1)^{i-1}(i-1)!(\begin{Bmatrix} m-1\\ i-1\end{Bmatrix}+i\begin{Bmatrix} m-1\\ i\end{Bmatrix})$
$\\ =\sum_{i=1}^{m}(-1)^{i-1}(i-1)!\begin{Bmatrix} m-1\\ i-1\end{Bmatrix}+\sum_{i=1}^{m}(-1)^{i-1}i!\begin{Bmatrix} m-1\\ i\end{Bmatrix}$
$\\ =\sum_{i=0}^{m-1}(-1)^ii!\begin{Bmatrix} m-1\\ i\end{Bmatrix}+\sum_{i=1}^{m-1}(-1)^{i-1}i!\begin{Bmatrix} m-1\\ i\end{Bmatrix}$
$\\ =[m=1]$
好的0.0
然后一个点集划分怎么求满足的方案呢,把要的那几位提出来丢线性基里,异或出0的方案数就是$2^{S-cnt}$,$cnt$是线性基的大小。
1 //#include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<math.h> 5 //#include<time.h> 6 //#include<complex> 7 //#include<set> 8 //#include<queue> 9 #include<algorithm> 10 #include<stdlib.h> 11 using namespace std; 12 13 #define LL long long 14 int qread() 15 { 16 char c; int s=0; while ((c=getchar())<'0' || c>'9'); 17 do s=s*10+c-'0'; while ((c=getchar())>='0' && c<='9'); return s; 18 } 19 20 //Pay attention to '-' , LL and double of qread!!!! 21 22 int n,S; 23 LL ans,f[22],a[66],b[66],two[66]; int list[22][22],len[22],bel[22]; 24 25 struct JI 26 { 27 LL a[66]; int n,m; 28 void clear(int mm) {m=mm; n=0; memset(a,0,sizeof(a));} 29 void insert(LL v) 30 { 31 for (int i=m;~i;i--) if ((v>>i)&1) 32 { 33 if (!a[i]) {a[i]=v; n++; break;} 34 v^=a[i]; 35 } 36 } 37 }ji; 38 39 void calc(int tot) 40 { 41 memset(b,0,sizeof(b)); 42 int lb=0; 43 for (int i=1,pp=0;i<=n;i++) 44 for (int j=i+1;j<=n;j++,pp++) 45 if (bel[i]!=bel[j]) 46 { 47 for (int k=1;k<=S;k++) b[k]|=((a[k]>>pp)&1)<<lb; 48 lb++; 49 } 50 ji.clear(lb-1); 51 for (int i=1;i<=S;i++) ji.insert(b[i]); 52 ans+=f[tot]*two[S-ji.n]; 53 } 54 55 void dfs(int cur,int tot) 56 { 57 if (cur>n) {calc(tot); return;} 58 for (int i=1;i<=tot;i++) 59 { 60 bel[cur]=i; 61 list[i][++len[i]]=cur; 62 dfs(cur+1,tot); 63 len[i]--; 64 } 65 bel[cur]=tot+1; 66 list[tot+1][++len[tot+1]]=cur; 67 dfs(cur+1,tot+1); 68 len[tot+1]--; 69 } 70 71 char s[55]; 72 int main() 73 { 74 S=qread(); 75 for (int i=1;i<=S;i++) 76 { 77 scanf("%s",s); int m=strlen(s); 78 n=(int)(sqrt(1+8*m)+1.1)>>1; 79 for (int j=0;j<m;j++) a[i]|=(LL)(s[j]=='1')<<j; 80 } 81 82 { 83 LL fac=1; int fu=1; 84 for (int i=1;i<=n;i++) 85 { 86 f[i]=fac*fu; 87 fu=-fu; fac*=i; 88 } 89 two[0]=1; for (int i=1;i<=S;i++) two[i]=two[i-1]<<1; 90 } 91 92 ans=0; dfs(1,0); 93 printf("%lld\n",ans); 94 return 0; 95 }
View Code
转载于:https://www.cnblogs.com/Blue233333/p/8927184.html
BZOJ4671: 异或图相关推荐
- 斯特林反演[bzoj4671]异或图
前言 继续学习容斥的技巧! 题意简介 题面链接 题目大意 定义两个无重边无自环图G1,G2G_1,G_2G1,G2的异或为G3G_3G3(G1,G2,G3G_1,G_2,G_3G1,G2,G ...
- [BZOJ4671]异或图
description BZOJ 定义两个结点数相同的图\(G1\)与图\(G2\)的异或为一个新的图\(G\), 其中如果\((u,v)\)在\(G1\)与\(G2\)中的出现次数之和为\(1\), ...
- 【BZOJ 4671】异或图 【斯特林反演】【线性基】【贝尔数复杂度】
传送门 题意:定义两个图的异或的边集为在两张图中恰出现一次的边.给sss张nnn个点的图的集合,求异或和为连通图的子集数. s≤60,n≤10s \leq 60,n \leq 10s≤60,n≤10 ...
- linux 往文件写4k大小,[svc]为何linux ext4文件系统目录默认大小是4k?
linux ext4普通盘为什么目录大小是4k? Why does every directory have a size 4096 bytes (4 K)? To understand this, ...
- 退役前的做题记录5.0
退役前的做题记录5.0 出于某种原因新开了一篇. [CodeChef]Querying on a Grid 对序列建立分治结构,每次处理\((l,mid,r)\)时,以\(mid\)为源点建立最短路树 ...
- 2022图神经网络5篇最新的研究综述:双曲/图分类/联邦/等变/异质性
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 转载于"深度学习与图网络" 近年来,深度学习领域关于图神经网络(G ...
- 2022年5篇图神经网络最新的研究综述
近年来,深度学习领域关于图神经网络(Graph Neural Networks,GNN)的研究热情日益高涨,图神经网络已经成为各大深度学习顶会的研究热点.GNN处理非结构化数据时的出色能力使其在网络数 ...
- 异质图综述 - Graph Neural Networks for Graphs with Heterophily: A Survey(CoRR 2022)
论文链接: https://arxiv.org/pdf/2202.07082.pdf 目录 摘要 1 绪论 2 初步措施 3 具有异质性的 GNN 3.1 Non-local Neighbor Ext ...
- 基于Python的通用、可扩展的图卷积神经网络
通用.可扩展的图卷积神经网络 一.背景介绍 图,作为计算机科学领域中一类重要的数据结构,提供了一种抽象表示事物 之间关系的方法.图结构包含两类主要元素--"节点"和"边& ...
最新文章
- python里unexpected eof while parsing_使用Python编程时的10个注意事项
- arcengine坐标转换[转]
- 《那些年啊,那些事——一个程序员的奋斗史》——117
- C++Primer再学习(3)
- PLSQL Developer中几个功能
- 重温6 ListView相关|单位dp/sp
- 解决:-bash: telnet: command not found
- php事务 面向对象,PHP面向对象之事务脚本模式(详解)
- 2G3G要退网了,但没必要着急换5G手机
- 爱情七十一课,低调恋爱
- angular 常用指令的使用
- c标签判断true false jsp_JSP 标准标签库(JSTL) | 菜鸟教程
- 计算机网络技术基础第二章答案,计算机网络技术基础各章节综合练习题及答案...
- 高程数据下载——DLR_SRTM_说明
- Map Reduce 四大组件
- 花呗、信用卡哪个用起来更方便?
- 夏普linux电视软件,夏普电视第三方软件安装方法,使用教程和攻略
- 地质勘查土质分类图片_土质的分类表
- switchhosts的作用
- inno setup安装制作软件详细使用步骤(含检测net版本环境)
热门文章
- 如何自学python到做项目-如何使用python进行第一个机器学习项目(详细教程篇)...
- 从零开始学习python-如何从零开始学python?
- php和python web开发-Web开发应该学习php还是python
- python在当前目录创建txt文件-python根据txt文本批量创建文件夹
- 电脑安装python失败-解决“Windows 7 Python3.6 安装失败”问题
- 自学python转行-转行Python,应该如何短期自学,达到就业水平
- python简单代码hello-PySide教程:一个简单的点击按钮示例
- php和python和java-python与java区别
- python绘制雷达图代码实例-python处理excel绘制雷达图
- python一个月能学成嘛-0基础学Python,1个月写爬虫,走了哪些弯路?