CF11D-A Simple Task【状压dp】
正题
题目链接:https://www.luogu.com.cn/problem/CF11D
题目大意
给出nnn个点mmm条边的一张简单无向图,求它的简单环的个数。
1≤n≤191\leq n\leq 191≤n≤19
解题思路
首先算重的问题很麻烦但也是解决这题的关键。
因为防止算重那么我们就只考虑在每个环编号最小的节点统计一次。
枚举一个起点,然后后面就只走编号大于其的节点用状压计算方案数即可。
时间复杂度O(2nn2)O(2^nn^2)O(2nn2)
code
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=19;
ll n,m,f[N][1<<N],ans;
bool a[N][N];
signed main()
{scanf("%lld%lld",&n,&m);for(ll i=1,x,y;i<=m;i++){scanf("%lld%lld",&x,&y);x--;y--;a[x][y]=a[y][x]=1;}ll MS=(1<<n),pre=0;for(ll p=0;p<n;p++){pre|=(1<<p);for(ll s=0;s<MS;s++){if(s&pre)continue;for(ll i=0;i<n;i++)f[i][s]=0;}f[p][0]=1;for(ll s=0;s<MS;s++){if(s&pre)continue;for(ll i=p;i<n;i++){if(!f[i][s])continue;for(ll j=p+1;j<n;j++){if((s>>j)&1)continue;if(a[i][j])f[j][s|(1<<j)]+=f[i][s];}if(a[i][p]&&s!=(s&-s))ans+=f[i][s];}}}printf("%lld\n",ans/2);return 0;
}
CF11D-A Simple Task【状压dp】相关推荐
- CF11D A Simple Task(状压DP)
\(solution:\) 思路大家应该都懂: 状压DP:\(f[i][j]\),其中 \(i\) 这一维是需要状压的,用来记录19个节点每一个是否已经走过(走过为 \(1\) ,没走为 \(0\) ...
- 【状压DP】哈密顿回路问题
[状压DP]哈密顿回路问题 lzq同学在我准备午睡的时候发了一道蓝桥杯的题目给我,是哈密顿回路的.第一次看的时候是想DFS+双向搜索优化减小搜索树规模,然后写烂了(如果有大佬用搜索优化写出来了麻烦教教 ...
- 【思维题 状压dp】APC001F - XOR Tree
可能算是道中规中矩的套路题吧-- Time limit : 2sec / Memory limit : 256MB Problem Statement You are given a tree wit ...
- ACM-ICPC 2018 南京赛区网络预赛 E AC Challenge 状压DP
题目链接: https://nanti.jisuanke.com/t/30994 Dlsj is competing in a contest with n (0 < n \le 20)n(0& ...
- ACM-ICPC 2018 南京赛区网络预赛 E AC Challenge(状压dp)
Dlsj is competing in a contest with n (0 < n \le 20)n(0<n≤20) problems. And he knows the answe ...
- ACM-ICPC 2018 南京赛区网络预赛 E. AC Challenge 状压dp
Dlsj is competing in a contest with n(0<n≤20)n (0 < n \le 20)n(0<n≤20) problems. And he kno ...
- POJ 1038 Bugs Integrated Inc (复杂的状压DP)
\(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...
- codeforces 8C. Looking for Order 状压dp
题目链接 给n个物品的坐标, 和一个包裹的位置, 包裹不能移动. 每次最多可以拿两个物品, 然后将它们放到包里, 求将所有物品放到包里所需走的最小路程. 直接状压dp就好了. #include < ...
- UVA10296 Jogging Trails(中国邮递员问题)(欧拉回路、一般图最大权匹配 / 状压DP)
整理的算法模板合集: ACM模板 目录 思路 UVA10296 Jogging Trails 题目翻译: 给你n个点,m条无向边,每条边有一定的距离数值,构造成一个连通图.问从任意一点出发,遍历所有的 ...
- POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)
poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...
最新文章
- 支架预压弹性变形值计算_桥梁支架的预压方法与流程
- postgres中分组后拼接多行
- php常见问题及其解决方案,PHP开源开发框架ZendFramework使用中常见问题说明及解决方案...
- ubuntu20.04自带python版本_替换 ubuntu 自带的python版本
- mysql表名怎么拼接_mysql必知必会(一)
- ECStore在Win环境下如何运行CMD命令
- requesbodys.java_这个requestBody的正确swagger-annotation是什么?
- 国内主要的ubuntu 源
- Redis实战pdf
- Windows下Appium环境搭建小结
- 使用夜神模拟器完美破解(反编译)微信小程序以及问题汇总
- 课设-基于51单片机的智能小车(循迹+避障+APP控制)
- oracle查询日期当天,oracle获取今天时间数据
- PS通道高反差保留计算人物磨皮技巧
- window10关闭磁盘bitlocker加密
- 域控服务器怎么开策略,组策略(域和域服务的搭建)
- Mac 使用 之 Permission denied XXX
- charles的基本介绍与使用
- 宇视大屏蓝屏排查步骤
- 简单理解2台主机数据通信过程
热门文章
- java aspose重叠_Aspose.Words - 在特定位置合并两个文档
- c语言不通类型指针转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...
- linux系统管理命令使用,Linux系统管理使用之基本命令(1)
- 下面选项能正确表示JAVA_模拟试题2
- 使有用计算机不注意卫生,保护眼睛注意细节有哪些
- element 方法返回的boolean被当成字符串了_13个需要知道的方法:使用 JavaScript 来操作 DOM...
- c++11 string u8_深入理解C++11:C++11新
- fcn网络训练代码_另辟蹊径,中科院自动化所等首次用图卷积网络解决语义分割难题...
- PHP防QQ列表右划,react native 实现类似QQ的侧滑列表效果
- [C++11]final关键字的使用