Codeforces986C AND Graph 【位运算】【dfs】
题目大意:
一张$ m $个编号互异点图,最大不超过$ 2^n $,若两个编号位与为0则连边,问连通块数量。
题目分析:
考虑怎样的两个点会连边。这种说法对于A和B两个点来说,就相当于B在A的0的子集中。我们不妨将A的0用1填充,得到的每一个数取反都是可以与A连边的点,然后这个取反前的数也可以继续填充。重新审视它发现我们从小到大地考虑每个0被1填充是没关系的,因为我们很显然地遍历了所有情况。那么可以做记忆化。时间复杂度$O(n2^n)$.
代码:
#include<bits/stdc++.h>
using namespace std; const int maxn = ; int n,m,ans;
int a[maxn],app[maxn];
int arr[maxn][]; void dfs(int now,int dr){
if(arr[now][dr] == ) return;
arr[now][dr] = ;
for(int i=;i<n;i++){
if(((<<i) & now) == ){
dfs(now|(<<i),dr);
}
}
if(app[(<<n)--now]) arr[(<<n)--now][] = ,dfs((<<n)--now,);
} void work(){
for(int i=;i<=m;i++){
if(!arr[a[i]][]){
ans++;arr[a[i]][] = ;
dfs(a[i],);
}
}
} int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++) scanf("%d",&a[i]),app[a[i]] = ;
work();
printf("%d",ans);
return ;
}
Codeforces986C AND Graph 【位运算】【dfs】的更多相关文章
- 【位运算DFS/DLX】【HDU1426】【数独】
题意:标准的一道数独题 DFS做法: 将横纵九宫格里的数字用位运算状态压缩,且可以通过逻辑或来确定总共有哪些数字被选择了,很方便也很快,代码如下 #include <cstdio> #in ...
- ACM学习历程—HDU5269 ZYB loves Xor I(位运算 && dfs && 排序)(BestCoder Round #44 1002题)
Problem Description Memphis loves xor very musch.Now he gets an array A.The length of A is n.Now he ...
- UVA 690 PipelineScheduling 位运算+dfs+剪枝
一开始最容易想到间隔最多为n,但是结点还是太多了,需要优化. 预处理:预判一下并保存下一个可以放的位置距离之前的距离.这样可以减少很多判断. 最优化剪枝:如果当前长度+剩下没放的程序*最短间隔如果大于 ...
- 牛客编程巅峰赛S2第10场 - 钻石&王者 C.牛牛的路径和 (位运算,dfs)
题意:给你节点数为\(n\)的树,每个节点都有自己的权值,求所有路径的上的点的权值按位与的和. 题解:题目给的数据很大,我们不能直接去找.因此我们可以枚举二进制\([1,20]\)的每一位,然后再枚举 ...
- 洛谷 1219:八皇后 (位运算 & DFS)
题目链接: https://www.luogu.org/problem/show?pid=1219#sub row:受上面的皇后通过列控制的位置 ld:受上面的皇后通过从右至左的斜对角线控制的位置 r ...
- UVa 818Cutting Chains (暴力dfs+位运算+二进制法)
题意:有 n 个圆环,其中有一些已经扣在一起了,现在要打开尽量少的环,使所有的环可以组成一条链. 析:刚开始看的时候,确实是不会啊....现在有点思路,但是还是差一点,方法也不够好,最后还是参考了网上 ...
- 数独求解问题(DFS+位运算优化)
In the game of Sudoku, you are given a large 9 × 9 grid divided into smaller 3 × 3 subgrids. For exa ...
- leetcode - 位运算题目汇总(上)
最近在看位运算的知识,十分感叹于位运算的博大精深,正好leetcode有 Bit Manipulation 的专题,正好拿来练练手. Subsets 给出一个由不同的数字组成的数组,枚举它的子数组(子 ...
- 【位运算经典应用】 N皇后问题
说到位运算的经典应用,不得不说N皇后问题. 学过程序设计的都知道N皇后问题,没听过也没关系.很简单,最传统的的N皇后问题是这个样子的,给你一个n * n大小的board,让你放n个皇后(国际象棋),要 ...
- N皇后问题(位运算实现)
本文参考Matrix67的位运算相关的博文. 顺道列出Matrix67的位运算及其使用技巧 (一) (二) (三) (四),很不错的文章,非常值得一看. 主要就其中的N皇后问题,给出C++位运算实现版 ...
随机推荐
- Comet OJ 热身赛(K题)principal(括号匹配问题+stack模拟)
principal 已经提交 已经通过 23.66% Total Submission:131 Total Accepted:31 题目描述 阿尔比恩王国潜伏着代号白鸽队''的一群间谍.在没有任务的时 ...
- 使用VBA进行JS加密的反混淆,还原JS代码。
本文地址:http://www.cnblogs.com/Charltsing/p/JSEval.html 联系QQ:564955427 类似下面的代码是登陆 全国企业信用信息公示系统(安徽)(网址:h ...
- [转帖]ODBC、OLEDB、ADO、ADO.NET
一文详解ODBC.OLEDB.ADO.ADO.NET之间的关系 2019年01月16日 21:28:38 LoveMIss-Y 阅读数:66更多 所属专栏: 白话C#高级编程 版权声明:本文为博主 ...
- WSL Windows subsytem linux 的简单学习与使用
1. win10 1709 以上的版本应该都增加上了 ctrl +r 运行 winver 查看版本 2. 添加删除程序 增加 wsl 增加一个功能 3. 打开cmd 输入 bash 即可 4. 可以将 ...
- 网络编程--使用UDP发送接收数据
package com.zhangxueliang.udp; import java.io.IOException; import java.net.DatagramPacket; import ja ...
- 想在已创建的Vue工程里引入vux组件
<1>. 在项目里安装vux npm install vux --save <2>. 安装vux-loader (这个vux文档似乎没介绍,当初没安装结果报了一堆错误) npm ...
- java 从键盘录入的三种方法
详细内容连接 https://blog.csdn.net/StriverLi/article/details/52984066
- Jmeter安装与使用(压测)
一.介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件,Java Se ...
- Spring标签之Bean @Scope
@Bean 的用法 @Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里.添加的bean的id为方法名 定义bean 下面是@Co ...
- 莫烦scikit-learn学习自修第二天【算法地图】
1. 算法地图