博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CF986C AND Graph
阅读量:6657 次
发布时间:2019-06-25

本文共 825 字,大约阅读时间需要 2 分钟。

半年前做的一道题现在还是不会

x&y=0

意味着,x的补集的子集都是和x直接相连的

不妨令图中的点数就是2^n

那么可以直接从x^((1<<n)-1)开始记忆化爆搜,路上遇到的都是和x直接相连的

如果遇到一个在给出集合里的数t,就从这个点额外再开一层,t^((1<<n)-1)再开始爆搜

这样,如果两个点直接或者间接相连,那么一定可以从任意一个点出发搜出整个连通块,并对每个点打上标记

总共的状态数是2^22。复杂度有保证

 

loc只是一个理解,其实不需要

#include
using namespace std;const int N=(1<<22)+10;int exi[N];bool vis[N];// zuo i youwu visbool has[N];// you i youwu visint cnt,mx,len,up;int a[N];int n,m;void dfs(int x,int loc){ //cout<
<<" now "<
<
>(lg[i-1]+1))?lg[i-1]+1:lg[i-1];*/ scanf("%d%d",&n,&m); for(int i=1;i<=m;i++){ scanf("%d",&a[i]),exi[a[i]]=i,mx=max(mx,a[i]); } for(int i=0;i<=23;i++){ if((1<
mx) break; len=i+1; } up=(1<

 

转载于:https://www.cnblogs.com/Miracevin/p/10430800.html

你可能感兴趣的文章
[LintCode] 通配符查询
查看>>
[Algorithms] Longest Common Subsequence
查看>>
java中的sql语句中如果有like怎么写
查看>>
day22-Model创建表补充
查看>>
C++ 类成员函数继承(virtual、非virtual)
查看>>
mysql只navicat
查看>>
HDU-2571-命运(DP)
查看>>
ubuntu下C操作Mysql数据库第一步
查看>>
java的Pattern类
查看>>
递归函数与二分查找算法
查看>>
使用Apache JMeter进行SQL优化性能测试
查看>>
在linux上部署jenkins
查看>>
头马角色注册系统说明
查看>>
二进制 + 模拟
查看>>
区间内无平方因子数
查看>>
1029: C语言程序设计教程(第三版)课后习题8.3
查看>>
[转]DPM2012系列之十八:如何保护工作组计算机
查看>>
[LeetCode]:217:Contains Duplicate
查看>>
C# checked和unchecked运算符
查看>>
蛤车1:两个习题,群作用与覆叠空间,N-S定理
查看>>