HDU 2894 DeBruijin (欧拉回路)
来源:互联网 发布:知豆可以开多少公里 编辑:程序博客网 时间:2024/06/01 09:16
题目地址
题意:中文不解释
思路:第一个输出无疑就是2^n,然后复杂的就是输出序列,下图就是一个n为3的时候的情况,因为每次都要旋转一位,我们可以把这个抽象成一个节点个数为2^(n-1)的图,对应2^(n-1)个n-1位二进制数,当前的节点代表的是二进制数字为k,他要连向代表数(k<<1)&(1<
#include <iostream>#include <cstring>#include <string>#include <queue>#include <vector>#include <map>#include <set>#include <stack>#include <cmath>#include <cstdio>#include <algorithm>#define LL long long #define N 1<<15#define M 200010#define inf 0x3f3f3f3fusing namespace std;const LL mod = 1e9 + 7;const double eps = 1e-9;int n;bool vis[N];stack<int> s;void dfs(int num) { int num1 = (num << 1)&((1 << n) - 1);//去除最高位,向左移1位,最低位补0 int num2 = num1 + 1;//去除最高位,向左移1位,最低位补1 if (!vis[num1]) { vis[num1] = true; dfs(num1); s.push(0); } if (!vis[num2]) { vis[num2] = true; dfs(num2); s.push(1); }}int main() { cin.sync_with_stdio(false); while (cin >> n) { memset(vis, false, sizeof(vis)); while (s.size()) { s.pop(); } dfs(0); cout << (1 << n) << " "; for (int i = 1; i < n; i++) { cout << 0; } while (s.size() >= n) { cout << s.top(); s.pop(); } cout << endl; } return 0;}
阅读全文
0 0
- HDU 2894 DeBruijin(欧拉回路)
- HDU 2894 DeBruijin (欧拉回路)
- HDU 2894 DeBruijin (欧拉回路)
- hdu 2894 DeBruijin(暴力搜索 || 欧拉回路)
- 杭电2894DeBruijin(欧拉回路)
- HDU 2894 DeBruijin 兹鼓欧拉回路
- HDOJ 2894 DeBruijin(dfs构造欧拉回路)
- hdoj DeBruijin 2894 (dfs&&欧拉回路转化) 好题
- HDU 2894 欧拉回路
- hdu 2894 欧拉回路
- HDU 1878 欧拉回路(判断欧拉回路)
- HDU 1878 欧拉回路(欧拉回路)
- HDU 欧拉回路
- 欧拉回路 HDU
- HDU 欧拉回路
- HDU 2894 Play On Words(欧拉回路)
- 【TOJ】1070. Ouroboros Snake --构造?DFS?欧拉回路?【TOJ】3381. DeBruijin
- hdu 1878(欧拉回路)
- ucos-ii学习笔记1 创建任务&&任务调度
- zookeeper简介
- oracle之 oracle database vault(数据库保险库)
- 常见网站CSS初始化
- T对象转换成map对象/List对象 * 或者map对象/List对象转换为T对象
- HDU 2894 DeBruijin (欧拉回路)
- module_platform_driver宏解析
- Java设计模式----适配器模式
- 关于Collection----ArrayList部分使用方法
- Paxos算法
- 安装tensorflow0.11方法
- 亚马逊Alexa Skill介绍
- 安装MySQL遇到的问题
- 数据结构-单链表按值删除