Atcoder Beginner Contest152F(DFS+状压DP)
二维状压写成一维状压,省略加上第i条边这一维
#define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
vector<pair<int,int> >v[];
long long dp[<<];
int x[];
bool dfs(int now,int fa,int root,int pos){//当前结点,父节点,终结点,所在边编号
if(now==root)
return ;
for(auto it:v[now]){
if(it.first!=fa&&dfs(it.first,now,root,pos)){
x[it.second]^=<<pos;
return ;
}
}
return ;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin>>n;
for(int i=;i<n;++i){
int a,b;
cin>>a>>b;
v[a].emplace_back(b,i);
v[b].emplace_back(a,i);
}
int m;
cin>>m;
for(int i=;i<m;++i){
int a,b;
cin>>a>>b;
dfs(a,,b,i);//遍历a和b中间的所有结点,即遍历两点之间所有边
}
dp[]=;//所有的边全白
for(int i=;i<n;++i)//每次添加一条边
for(int j=(<<m)-;j>=;--j)//状压DP,从后往前是为了避免重复加
dp[j|x[i]]+=dp[j];//dp【j状态|加入第i条边变黑能满足的状态x[i]】+=dp【第i条边加入之前的状态j】
cout<<dp[(<<m)-];//全状态
return ;
}
Atcoder Beginner Contest152F(DFS+状压DP)的更多相关文章
- POJ 1321 棋盘问题(DFS & 状压DP)
		
用DFS写当然很简单了,8!的复杂度,16MS搞定. 在Discuss里看到有同学用状态压缩DP来写,就学习了一下,果然很精妙呀. 状态转移分两种,当前行不加棋子,和加棋子.dp[i][j]中,i代表 ...
 - Calculation(dfs+状压dp)
		
Problem 1608 - Calculation Time Limit: 500MS Memory Limit: 65536KB Total Submit: 311 Accepted: ...
 - CODEVS1358【DFS/状压DP】
		
题目链接[http://codevs.cn/problem/1358/] 题意:这个游戏在一个有10*10个格子的棋盘上进行,初始时棋子位于左上角,终点为右下角,棋盘上每个格子内有一个0到9的数字,每 ...
 - 【62测试】【状压dp】【dfs序】【线段树】
		
第一题: 给出一个长度不超过100只包含'B'和'R'的字符串,将其无限重复下去. 比如,BBRB则会形成 BBRBBBRBBBRB 现在给出一个区间[l,r]询问该区间内有多少个字符'B'(区间下标 ...
 - BZOJ-1087 互不侵犯King    状压DP+DFS预处理
		
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2337 Solved: 1366 [Submit][ ...
 - UVaLive 6625 Diagrams & Tableaux (状压DP 或者 DFS暴力)
		
题意:给一个的格子图,有 n 行单元格,每行有a[i]个格子,要求往格子中填1~m的数字,要求每个数字大于等于左边的数字,大于上边的数字,问有多少种填充方法. 析:感觉像个DP,但是不会啊...就想暴 ...
 - HDU 4272 LianLianKan (状压DP+DFS)题解
		
思路: 用状压DP+DFS遍历查找是否可行.假设一个数为x,那么他最远可以消去的点为x+9,因为x+1~x+4都能被他前面的点消去,所以我们将2进制的范围设为2^10,用0表示已经消去,1表示没有消去 ...
 - 【题解】洛谷P3959 [NOIP2017TG] 宝藏(状压DP+DFS)
		
洛谷P3959:https://www.luogu.org/problemnew/show/P3959 前言 NOIP2017时还很弱(现在也很弱 看出来是DP 但是并不会状压DP 现在看来思路并不复 ...
 - bjtu 1846. Infinity的装备[状压dp+dfs/bfs]
		
https://citel.bjtu.edu.cn/acm/oj/problem/1846 1846. Infinity的装备 时间限制 1000 ms 内存限制 64 MB 题目描述 “测试服终于下 ...
 
随机推荐
- redis安装并设置开机启动
			
1.下载并上传redis安装包至linux服务器目录:/usr/local/redis. 2.解压:tar -zxvf redis-5.0.7.tar.gz 3.编译安装:make && ...
 - a标签绑定事件
			
<a href="javascript:void(0);" onclick="js_method()"></a> 这种方法是很多网站最常 ...
 - C++-hihoCode1545-小Hi和小Ho的对弈游戏[树上Nim]
			
#include <set> #include <map> #include <cmath> #include <queue> #include < ...
 - Eclipse导入工程Some projects cannot be imported because they already exist in the workspace
			
记录一下本次出错原因,以及解决方法 错误原因: 第一次导入后,删除工程,没有没有勾选Delete project contents on disk(cannot be undone) 解决方法: 1 ...
 - OpenGL 编程指南 (1)
			
1.在OpenGL3.0(包含3.0)前,或者使用兼容模式(compatibility profile)环境,OpenGL还包含一个固定功能管线(fixed-function pipeline),这时 ...
 - java课后作业3
			
1.动手动脑 由于类中定义了需要参数的构造方法,导致系统不再提供默认的构造方法. 2.java字段初始化 运行结果 100 300 java字段在初始化时先按照对应的构造方法执行.若构造方法中没有对变 ...
 - centos7使用jenkins启动找不到模块
			
问题: 在jenkins上启动pycharm项目报:ModuleNotFoundError: No module named 'wanwenyc' 其中‘wanwenyc’为pycharm工程项目路径 ...
 - 服务遇到的问题  Linux
			
1.vnc配置: https://www.cnblogs.com/leolzi/p/9907856.html 2.遇到的问题,linux重启后不能链接的问题 rabbitmq 服务启动问题 [bf@l ...
 - Spring Boot的27个注解【核心】
			
导读[约定大于配置] Spring Boot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较火热的微服务 ...
 - 以管理员身份运行 Microsoft Edge 时不支持登录
			
之前一直用 edge chromium bate版本 一直不能登录 今天试了正式版 还是这样 然后百度一大堆没找到解决方案 设置兼容性为windown7 是可以的 但是 UI显示会有问题 再次打开 又 ...