【构造】URAL 2004 Scientists from Spilkovo

来源:互联网 发布:淘宝卖茶叶要怎么办理 编辑:程序博客网 时间:2024/06/05 10:26

点击打开链接

求一个最短的串,使得子串能够包括0-(2^n-1)所有的二进制

构造一个欧拉回路

顾森博文:地址



#include<stdio.h>#include<stdlib.h>#include<string.h>#include<algorithm>#include<iomanip>#include<iostream>#include<queue>#include<stack>using namespace std;bool sign[1500000];int n;string answer;int main(){    while(scanf("%d",&n)!=EOF)    {        int temp=(1<<n)-1;        memset(sign,false,sizeof(sign));        answer.clear();        sign[temp]=true;        answer.insert(0,n,'1');        while(temp--)        {            int ans=0;            for(int i=answer.length()-n+1; i<answer.length(); i++)                ans=ans*2+answer[i]-'0';            int ans1=ans*2;            if(!sign[ans1])            {                sign[ans1]=true;                answer+='0';            }            else            {                sign[ans1+1]=true;                answer+='1';            }        }        cout<<answer<<endl;    }    return 0;}


0 0