zoukankan      html  css  js  c++  java
  • BZOJ-3033 太鼓达人

    欧拉回路。

    把每个数当作一个节点,能首尾相连的就连接一条有向边。

    然后从起点跑一遍就行。

    #include <cstdio>
    #include <algorithm>
    #include <iostream>
    #include <cctype>
    #include <queue>
    #include <cstring>
    using namespace std;
    #define rep(i, l, r) for(int i=l; i<=r; i++)
    #define down(i, l, r) for(int i=l; i>=r; i--)
    #define travel(x) for(edge *p=fir[x]; p; p=p->n)
    #define maxn 12345
    #define maxm 123456
    #define inf 0x7fffffff
    #define clr(x, c) memset(x, c, sizeof(x))
    inline int read()
    {
    	int x=0; char ch=getchar();
    	while (!isdigit(ch)) ch=getchar();
    	while (isdigit(ch)) { x=x*10+ch-'0'; ch=getchar(); }
    	return x;
    }
    int n=read(), m=1, top, s[maxn];
    bool b[maxn];
    bool dfs(int x)
    {
    	s[++top]=x; b[x]=1;
    	if (top==m) return true;
    	if (!b[(x*2)%m] && dfs((x*2)%m)) return true;
    	if (!b[(x*2)%m+1] && dfs((x*2)%m+1))  return true;
    	--top; b[x]=0; return false;
    }
    int main()
    {
    	rep(i, 1, n) m*=2; printf("%d ", m);
    	dfs(0);
    	m/=2; rep(i, 1, top) printf("%d", s[i]/m);
    }
  • 相关阅读:
    第十一周上机练习
    JAVA第十周上机练习
    JAVA第九周上机练习
    JAVA第八周作业
    JAVA第八周上机作业
    JAVA第七周作业
    Java第七周上机练习
    Java第六周作业
    JAVA第六周上机练习
    34-指针与二维数组
  • 原文地址:https://www.cnblogs.com/NanoApe/p/4479290.html
Copyright © 2011-2022 走看看