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轴直线从左向右扫过去. 这道题目要求求出所有圆的异或并. 所以我们可以求出 ...
随机推荐
- mysql的数据导出方法
mysql的数据导出几种方法 从网上找到一些问题是关于如何从MySQL中导出数据,以便用在本地或其它的数据库系统之上:以及 将现有数据导入MySQL数据库中. 数据导出 数据导出主要有以下几种方法 ...
- 【JavaWeb项目】一个众筹网站的开发(六)后台用户权限控制
登陆成功进入控制面板后 左侧的菜单是共同的元素,抽取出来做静态包含 要求必须是按照不同的用户得到不同的菜单 用户做了权限限制,哪个用户能操作哪些内容(链接.按钮.内容) 一.RBAC权限模型 权限管理 ...
- 图像元数据编辑软件:MetaImage使用流程讲解
MetaImage是唯一的macOS工具,允许在处理所有类型的标签格式时编辑,读取和写入元数据.在时尚的界面中导航,您可以更改图像元数据的所有内容,并对数百张相似的照片进行相同的编辑. https:/ ...
- 【leetcode】977. Squares of a Sorted Array
题目如下: Given an array of integers A sorted in non-decreasing order, return an array of the squares of ...
- Delphi max函数和min函数
uses单元 math: min函数 min(A,B); 比较A.B的大小,取最小值 max函数 min(A,B); 比较A.B的大小,取最大值 原型示例:function Min(const A ...
- K8S 容器之间通讯方式
概述 首先k8s里面容器是存在于pod里面的,所以容器之间通讯,一般分为三种类型: 1. pod内部容器之间 2. pod 与 pod 容器之间 3. pod 访问service服务 pod内部容器之 ...
- php linux下安装xml扩展
1.进入PHP安装源码包,找到ext下的ftp,进入 cd /home/local/php-5.6.25/ext/xml 2./usr/local/php/bin/phpize 3../configu ...
- libcmt.lib(crt0dat.obj) : error LNK2005: _amsg_exit 已经在 MSVCRTD.lib(MSVCR110D.dll) 中定义
问题描述(VC2012): 1>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: 默认库"libcmt.lib"与其他库的使用冲突:请 ...
- ajax请求是的动画实现
ajax请求是的动画实现 ajax是基于XMLHttpRequest对象封装,ajax的具体属性就有: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type S ...
- java有序列表
关于有序和无序的定义: 有序:有序列表中的元素具有某种内在的关联,这种关联定义了列表之间的顺序 无序:无序列表中的元素按使用者所选择得任意方式排序 索引:索引列表为他的元素维护一段连续的数字索引值 有 ...