题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2894

题目大意:旋转鼓的表面分成m块扇形,如图所示(m=8)。图中阴影区表示用导电材料制成,空白区用绝缘材料制成,终端a、b和c是3(k=3)处接地或不是接地分别用二进制信号0或1表示。因此,鼓的位置可用二进制信号表示。试问应如何选取这8个扇形的材料使每转过一个扇形都得到一个不同的二进制信号,即每转一周,能得到000到111的8个数。

那我们现在把旋转鼓的表面分成m块扇形,每一份记为0或1,使得任何相继的k个数的有序组(按同一方向)都不同,对固定的k,m最大可达到多少,并任意输出符合条件的一个这样的有序组。

Input
每个case输入一个数k (2<=k<=11),表示图中所示的abc这样的接地线的数量。
Output
每个case输出m所能达到的最大值 ,并且输出字典序最小的一个符合条件的有序组,中间用空格隔开。Case间没有空行。有序组输出的格式为:00010111(k=3,只输出一个周期(0001011100010111……),并且首尾刚好是相接的)。
解题思路:参考链接

第一问m达到的最大值为2^k。

第二问就是模拟一下旋转鼓接地线的旋转过程,每次旋转即删去第一个数,然后在最后加一个0(a<<1&((1<<k)-1))或1(a<<1&((1<<k)-1)+1),同时标记出现过的数字,保证每个出现的数字都不同。

因为所有数为0到2^k-1,对于任意给定的点a,将它与点a1=a<<1&((1<<k)-1)与点a2=a1+1分别连一条边,构成欧拉回路(每个点入度=出度=2),加一个vis数组确定每个数出现一次。因为结果需要按照字典序从小到大排,所以首先输出的必然是k个前导0,然后dfs判断0或1时先判0,再判1,逆序输出即可(dfs回溯)。

代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#define CLR(arr,val) memset(arr,val,sizeof(arr))
using namespace std;
const int N=; int k,cnt;
int ans[<<N];
bool vis[<<N]; void init(){
CLR(vis,false);
CLR(ans,);
cnt=;
} void euler(int st) {
int s1=(st<<)&((<<k)-);
int s2=s1+;
if (!vis[s1]){
vis[s1]=;
euler(s1);
ans[++cnt]=;
}
if (!vis[s2]) {
vis[s2]=;
euler(s2);
ans[++cnt]=;
}
} int main(){
while(~scanf("%d",&k)){
init();
euler();
printf("%d ",cnt);
//因为要求字典序最小,所以前k位都是0(前导零)
for(int i=;i<k;i++){
printf("");
}
for(int i=cnt;i>=k;i--){
printf("%d",ans[i]);
}
printf("\n");
}
return ;
}

HDU 2894 DeBruijin (数位欧拉)的更多相关文章

  1. HDU 1695 GCD (欧拉函数+容斥原理)

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  2. HDU 5430 Reflect(欧拉函数)

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=5430 从镜面材质的圆上一点发出一道光线反射NNN次后首次回到起点. 问本质不同的发射的方案数. 输入描述 ...

  3. hdu 5279 Reflect phi 欧拉函数

    Reflect Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/contest_chi ...

  4. HDU 1695 GCD(欧拉函数+容斥原理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题意:x位于区间[a, b],y位于区间[c, d],求满足GCD(x, y) = k的(x, ...

  5. hdu GuGuFishtion 6390 数论 欧拉函数

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=6390 直接开始证明: 我们设…………………………………….....…...............………… ...

  6. HDU 1787 GCD Again(欧拉函数,水题)

    GCD Again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  7. hdu 3501 Calculation 2 (欧拉函数)

    题目 题意:求小于n并且 和n不互质的数的总和. 思路:求小于n并且与n互质的数的和为:n*phi[n]/2 . 若a和n互质,n-a必定也和n互质(a<n).也就是说num必定为偶数.其中互质 ...

  8. hdu 1695 GCD(欧拉函数+容斥)

    Problem Description Given 5 integers: a, b, c, d, k, you're to find x in a...b, y in c...d that GCD( ...

  9. hdu 2814 快速求欧拉函数

    /** 大意: 求[a,b] 之间 phi(a) + phi(a+1)...+ phi(b): 思路: 快速求欧拉函数 **/ #include <iostream> #include & ...

随机推荐

  1. [ACM]Codeforces Round #534 (Div. 2)

    A. Splitting into digits Vasya has his favourite number n. He wants to split it to some non-zero dig ...

  2. HTML 页面源代码布局介绍

    http://www.cnblogs.com/polk6/archive/2013/05/10/3071451.html 此介绍以google首页源代码截图为例: 从上到下依次介绍: 1.<!D ...

  3. 手脱PECompact v2.xx

    个人认为这个壳对于新手有那么一点点难度,所以用单步和ESP都跑一下,我觉得单步是最最基础的,所以一定要掌握 一.单步 1.PEID查壳 PECompact v2.xx (16 ms) 2.载入OD,除 ...

  4. poi对excel的操作(二)

    二.进阶的对象 1.CellType 枚举类 单元格类型 CellType.STRING---文本型 等 如何是指单元格类型:cell.setCellType(CellType.STRING) 2.C ...

  5. Eclipse 使用mybatis generator插件自动生成代码

    Eclipse 使用mybatis generator插件自动生成代码 标签: mybatis 2016-12-07 15:10 5247人阅读 评论(0) 收藏 举报 .embody{ paddin ...

  6. 几何+思维 Samara University ACM ICPC 2016-2017 Quarterfinal Qualification Contest K. Revenge of the Dragon

    题目链接:http://codeforces.com/gym/101149/problem/K 题目大意: 给你两个点a,b.一个人在a点,一个人在b点,b点的人要追杀a的点,他的跑步速度是a的两倍. ...

  7. Fast File System

    不扯淡了,直接来写吧,一天一共要写三篇博客,还有两篇呢. 1. 这篇博客讲什么? Fast File System(FFS)快速文件系统,基本思想已经在在上一篇博客File System Implem ...

  8. DELPHI中的快捷方式一览(完全版)

    1.SHIFT+鼠标左键    先选中任一控件,按键后可选中窗体(选中控件后按Esc效果一样)2.Shift+F8          调试时弹出CPU窗口.3.Shift+F10         等于 ...

  9. CSS与HTML结合

    CSS与HTML结合的4中方式: 1.每个HTML标签都有style属性 2.当页面中有多个标签具有相同样式时,可定义style标签封装样式以复用 <style type=”text/css”& ...

  10. js关闭当前页面跳转新页面

    页面代码: <p class="info"><span style="font-weight: bold">所属项目:</span ...