hihoCoder #1182 欧拉路·三 (变形)
题意:
写出一个环,环上有2^n个格子,每个格子中的数字是0或1,相连着的n个格子可以组成一个数的二进制,要求给出这2^n个数字的序列,使得组成的2^n个数字全是不同的。(即从0到2^n-1)
思路:
构造一个图,但是只需要考虑边,每条边假设为n个0/1组成的串,即此图有2^n条边,每边代表1个数字。若两边经过同一个点,则可以从一条边k经过 (k<<1)+0/1就是左边去掉1位,再左移一位,再在后面添加0或1,就相当于切换到另外一边。既然可以在后面添加0或1,那么就相当于一个点有两条出边,那么也就可以看到每个点也有两条入边。边1001和0001都可以转成0011和0010。此时他们经过了1个点,前两条边为入边,后两条边为出边(如图)。
可以从0开始出发,进行暴力DFS,需要注意的只是路径应该是欧拉路的路径,要从回溯开始计起,为了防止无限循环,要记录下访问过的路径。但是所要的答案是顺时针的,所以要从路径的前面开始输出。每次输出二进制的最后一位即可。 注:这是有向图,但是每个点都是入度=出度=2,那么可以从任意一个点出发,不仅限于0出发。(因为没有入度!=出度的点,该点是起/终点)
1 #include <bits/stdc++.h> 2 #define N 16 3 using namespace std; 4 int num[N], n, mod=1, vis[50000],ans[50000],q;//上限3万多条边 5 void fleury(const int &t) 6 { 7 vis[t]=true; //该边访问过 8 int tmp=((t&mod)<<1); //去掉最高位再左移一位 9 if(!vis[tmp]) fleury(tmp); 10 if(!vis[++tmp]) fleury(tmp); 11 ans[q++]=t;//路径:记录走过的边 12 } 13 int main() 14 { 15 //freopen("input.txt", "r", stdin); 16 scanf("%d",&n); 17 for(int i=2; i<n; i++) mod=(mod<<1)+1; //去掉最高位时有用到 18 fleury(0); 19 for(int i=q-1; i>=0; i--) printf("%d",ans[i]&1);//任一合法答案 20 return 0; 21 }
AC代码
转载于:https://www.cnblogs.com/xcw0754/p/4595894.html
hihoCoder #1182 欧拉路·三 (变形)相关推荐
- #1182 : 欧拉路·三(有向图的欧拉路)
#1182 : 欧拉路·三 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho破解了一道又一道难题,终于来到了最后一关.只要打开眼前的宝箱就可以通关这个游戏了 ...
- [hihoCoder] 第五十周: 欧拉路·二
题目1 : 欧拉路·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上一回中小Hi和小Ho控制着主角收集了分散在各个木桥上的道具,这些道具其实是一块一块骨牌. 主角 ...
- 【牛客 - 369C】小A与欧拉路(bfs树的直径)
题干: 链接:https://ac.nowcoder.com/acm/contest/369/C 来源:牛客网 小A给你了一棵树,对于这棵树上的每一条边,你都可以将它复制任意(可以为0)次(即在这条边 ...
- 洛谷P1127 词链 欧拉路问题
题目描述: 如果单词 XXX 的末字母与单词 YYY 的首字母相同,则 XXX 与 YYY 可以相连成 X.YX.YX.Y.(注意:XXX.YYY 之间是英文的句号 .).例如,单词 dog 与单词 ...
- HDU1116 Play on Words——欧拉路(有向图+并查集)
点这里 题意: T组输入,每组输入有n个单词,要求将所有单词两两首尾相连,要求是前一个单词的最后一个字母和后一个单词的最后一个字母必须相同.如果能将所有单词连成一串,输出Ordering is pos ...
- 小A与欧拉路 (树加边求最小权值欧拉路+树的直径)
链接:https://ac.nowcoder.com/acm/contest/369/C 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言2621 ...
- 离散数学实验报告 实验3 欧拉路的确定
离散数学实验报告 实验3 欧拉路的确定 一.实验目的 理解欧拉图的概念,掌握欧拉通/回路的判定方法. 二.实验内容 输入一个无向简单图的邻接矩阵,判定该图是否含有欧拉通/回路.若有,请给出一条欧拉通/ ...
- 海亮Day2:差分约束、拓扑排序、欧拉路
海亮第二天,想着说预习一下的,可是昨天10h+都没有把那六道题打完,就打了四道,上午就讲完课了,还是延续昨天的博客,今天接着总结.. 欧拉路 开头就是特别经典的七桥问题,讲欧拉路一定会讲到的问题,也就 ...
- 图论--欧拉路,欧拉回路(小结)
在题目中在慢慢细说概念 1.HDU - 3018 Ant Trip 题目大意:又N个村庄,M条道路.问须要走几次才干将全部的路遍历 解题思路:这题问的是有关欧拉路的判定 欧拉路就是每条边仅仅能走一次, ...
最新文章
- C#程序设计笔记(第九章)
- 计算机基础知识ip地址,计算机基础知识练习题
- Javascript处理时间
- 带着canvas去流浪系列之六 绘制雷达图
- 软件需求最佳实践:SERU过程框架原理与应用
- maven3常用命令
- 比赛-h47学长的训练赛 (27 Aug, 2018)
- 光谱分辨率单位_【ENVI入门系列】16.基本光谱分析
- linux c语言 修改mac地址,C语言根据MAC地址查找网卡并修改IP地址
- matlab upfc,UPFC是什么意思
- ARFoundation系列讲解 - 57 3D物体识别一
- h5 虚拟服务器,h5制作选择虚拟主机还是服务器
- (七)《数电》——CMOS与TTL门电路
- 电脑硬件升级——笔记本更换更大容量的固态硬盘,并进行系统迁移
- 老弟,来了?VUE+Nuxt.js+Koa+Vuex入门教程(一)仿写一个cnode网站
- filebrowser实现私有网盘
- VLC Media Player
- I.Gree的心房(思维题)
- 元旦主题HTML,2018年元旦主题活动策划方案
- seata xid是什么_html中的xid
热门文章
- 埃夫特冲刺科创板 国产工业机器人领军者谋“换道超车”
- android 模拟器识别,一种基于符号的识别Android应用运行在模拟器中的方法与流程...
- html文件div盒子浮动,css基础03-盒模型、网站布局思想、浮动以及浮动带来的影响...
- python x 0b1011_PAT 1011 A+B和C (15)(C++JAVAPython)
- 华为数据通信部门怎么样_华为最高级别认证适合小白吗
- 注解@Slf4j的使用
- 接口有class类对象吗
- 083_html5应用程序缓存
- html的区域大小,JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性...
- Android下的Linux