dfs套异或的包含性——cf986C好
很好的题,想了半天,官方题解的解法更好
这种异或问题的包含性在北邮的校赛里就出现过,需要认真学习一下
/*
y和所有合法的x合并,如果没有剪枝,那么复杂度爆炸总共要判(2^n*2^n)
可以考虑如下优化:如果x & y==0 ,那么所有x的子集也是合法的
所以现在可以将y和x的集合都加边,即在并查集里将y和x的集合合并起来
另一个y' & x==0 那么y'只要和x合并即可,只要判断一次 那么现在问题转化为如何预处理上面的x的集合,还是用大的集合包含小的集合
即如果f[x-(1<<i)]=1,那么f[x]=1因为如果x对于y合法,那么x-(1<<i)必定也合法
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 5000000 int n,m,a[maxn],f[maxn],fa[maxn]; int find(int x){
return fa[x]==x?x:fa[x]=find(fa[x]);
}
void bing(int x,int y){
x=find(x);y=find(y);
if(x!=y)fa[x]=y;
}
void dfs(int x,int y){
if(f[x]==)return;
if(find(x)==find(y))return;
bing(x,y);
for(int i=;i<n;i++)
if(x & (<<i))
dfs(x^(<<i),y);
} int main(){
cin>>n>>m;
int mask=(<<n);
for(int i=;i<=m;i++)scanf("%d",&a[i]),f[a[i]]=;
for(int i=;i<mask;i++)fa[i]=i; for(int i=;i<mask;i++)//预处理用来剪枝的集合
for(int j=;j<n;j++)
if(i & (<<j))
f[i]|=f[i ^ (<<j)]; for(int i=;i<=m;i++)
dfs(mask-a[i]-,a[i]);
int ans=;
for(int i=;i<=m;i++)
ans+=(fa[a[i]]==a[i]);
cout<<ans<<'\n';
}
dfs套异或的包含性——cf986C好的更多相关文章
- 索引中include的魅力(具有包含性列的索引) (转)
开文之前首先要讲讲几个概念 [覆盖查询] 当索引包含查询引用的所有列时,它通常称为“覆盖查询”. [索引覆盖] 如果返回的数据列就包含于索引的键值中,或者包含于索引的键值+聚集索引的键值中,那么就不会 ...
- SQL Server 索引中include的魅力(具有包含性列的索引)
2010-01-11 20:44 by 听风吹雨, 22580 阅读, 24 评论, 收藏, 编辑 开文之前首先要讲讲几个概念 [覆盖查询] 当索引包含查询引用的所有列时,它通常称为“覆盖查询”. [ ...
- [转帖]SQL Server 索引中include的魅力(具有包含性列的索引)
SQL Server 索引中include的魅力(具有包含性列的索引) http://www.cnblogs.com/gaizai/archive/2010/01/11/1644358.html 上个 ...
- SQL Server 索引中include的魅力(具有包含性列的索引)(转载)
开文之前首先要讲讲几个概念 [覆盖查询] 当索引包含查询引用的所有列时,它通常称为“覆盖查询”. [索引覆盖] 如果返回的数据列就包含于索引的键值中,或者包含于索引的键值+聚集索引的键值中,那么就不 ...
- 100万套PPT模板,包含全宇宙所有主题类型PPT,绕宇宙100圈,持续更新
100万套PPT模板,包含全宇宙所有主题类型PPT(全部免费,都是精品,没有一张垃圾不好看的PPT,任何一张PPT拿来套入自己的信息就可以立马使用),绕宇宙100圈,任意一个模板在某文库上都价不菲.强 ...
- 一套完整的VI包含哪些元素
VI设计,即视觉识别系统,企业VI设计是企业品牌建设的重中之重.最近很多人都在问,一套完整的企业VI设计都包括哪些内容?笔者站在一个高级设计师的角度,来简单谈一谈VI设计包括哪些内容.文中指出,一套完 ...
- 查找担保圈-step5-比较各组之间的成员,对组的包含性进行查询,具体见程序的注释-版本2
USE [test] GO /****** Object: StoredProcedure [dbo].[p03_get_groupno_e2] Script Date: 2019/7/8 15:01 ...
- codechef T6 Pishty and tree dfs序+线段树
PSHTTR: Pishty 和城堡题目描述 Pishty 是生活在胡斯特市的一个小男孩.胡斯特是胡克兰境内的一个古城,以其中世纪风格 的古堡和非常聪明的熊闻名全国. 胡斯特的镇城之宝是就是这么一座古 ...
- BZOJ 4561 [JLoi2016]圆的异或并 ——扫描线
扫描线的应用. 扫描线就是用数据结构维护一个相对的顺序不变,带修改的东西. 通常只用于一次询问的情况. 抽象的看做一条垂直于x轴直线从左向右扫过去. 这道题目要求求出所有圆的异或并. 所以我们可以求出 ...
随机推荐
- socket中的绑定
- 根据ID查询实体
//查询实体 $scope.findOne=function(id){ $http.get('../brand/findOne.do?id='+id).success( function(respon ...
- Shell基础(四):字符串截取及切割、字符串初值的处理、基使用Shell数组、expect预期交互、使用正则表达式
一.字符串截取及切割 目标: 使用Shell完成各种Linux运维任务时,一旦涉及到判断.条件测试等相关操作时,往往需要对相关的命令输出进行过滤,提取出符合要求的字符串. 本案例要求熟悉字符串的常见处 ...
- delphi 文件的操作:重命名、复制、移动、删除
Delphi 文件的操作:重命名.复制.移动.删除第一种方法: RenameFile('Oldname', 'Newname'); CopyFile(PChar('Oldname'), PChar(' ...
- BAT批处理知识 及 常用批处理
1.常用DOS命令:https://blog.csdn.net/qq_38676810/article/details/79584531 或 https://www.jb51.net/articl ...
- pandas中读取文件报错
import pandas as pd fileName = "路径中带有中文/xxx.csv" tf_train = pd.read_csv(fileName) 会提示报错 OS ...
- Entity Framework 应用程序有以下优缺点
优点: 1.跨数据库支持能力强大,只需修改配置就可以轻松实现数据库切换2.提升了开发效率,不需要在编写Sql脚本,但是有些特殊Sql脚本EF无法实现,需要我们自己编写(通过EF中的ExecuteSql ...
- Dubbo入门到精通学习笔记(十七):FastDFS集群的安装、FastDFS集群的配置
文章目录 FastDFS集群的安装 FastDFS 介绍(参考:http://www.oschina.net/p/fastdfs) FastDFS 上传文件交互过程: FastDFS 下载文件交互过程 ...
- JHipster研究
liquibase工作原理: master.xml用来维护所有变更记录文件引用 changelog文件夹用来保存具体的变更细节 系统启动时会比较master.xml中include的file,应用差异 ...
- autocad 2015 破解方法
下载 http://trial.autodesk.com/SWDLDNET4/2015/ACD/DLM/AutoCAD_2015_Simplified_Chinese_Win_64bit_dlm.sf ...