poj 1780 code(欧拉路)
/*
对于n为密码想要序列最短 那么 1234 2345 这两个一定挨着
就是说 前一个的后n-1位是后一个的前n-1位 假设n==3
我们用0-99作为点的编号建图 然后每个点连出去10条边
两个相邻点有n-1个是重复的 边的权值可用两个点计算
比如 12 23 权值为123 123 234 权值为1234
显然最后的序列是每个边记录一次 也就是跑欧拉路
对于记录下的边权 第一条输出前n-1为 上下的输出最后一位
这就是答案了 poj上没有special judge 要求字典序最小
这里建边时从9-0 就ok了
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 1000010
using namespace std;
int n,m,num,head[maxn],s[maxn],len;
int S[maxn],top,f[maxn],T[maxn];
struct node
{
int u,v,t,pre;
}e[maxn*];
void Clear()
{
num=len=top=;
memset(head,-,sizeof(head));
memset(head,-,sizeof(head));
memset(f,,sizeof(f));
}
void Add(int from,int to,int dis)
{
e[num].v=to;
e[num].t=dis;
e[num].pre=head[from];
head[from]=num++;
}
void Dfs(int x)
{
S[++top]=x;T[top]=;
while(top)
{
int u=S[top],falg=,ti=T[top];
for(int i=head[u];i!=-;i=e[i].pre)
{
int v=e[i].v;
if(f[e[i].t])continue;
falg=;f[e[i].t]=;
S[++top]=v;T[top]=e[i].t;
break;
}
if(!falg)s[++len]=ti,top--;
}
}
int main()
{
while(scanf("%d",&n)&&n)
{
Clear();
if(n==){puts("");continue;}
int t=,r=;
for(int i=;i<n;i++)t*=,r*=;r/=;
for(int i=;i<t;i++)
for(int j=;j>=;j--)
Add(i,i%r*+j,i*+j);
Dfs();
for(int i=;i<=n-;i++)printf("");
printf("%d",s[len]/);
for(int i=len-;i>=;i--)printf("%d",s[i]%);
printf("\n");
}
}
poj 1780 code(欧拉路)的更多相关文章
- POJ 2230 (欧拉路)
分析: 基础的欧拉路算法,变化在于要求每条边正向和反向各走一遍. 链式前向星构图,只要标记走过的单向边,边找边输出即可. code #include <iostream> #include ...
- [欧拉回路+手动开栈] poj 1780 Code
题目链接: http://poj.org/problem? id=1780 Code Time Limit: 1000MS Memory Limit: 65536K Total Submissio ...
- POJ 1780 Code(有向图的欧拉通路)
输入n(1<=n<=6),输出长度为10^n + n -1 的字符串答案. 其中,字符串以每n个为一组,使得所有组都互不相同,且输出的字符串要求字典序最小. 显然a[01...(n-1)] ...
- POJ 1780 Code(欧拉回路+非递归dfs)
http://poj.org/problem?id=1780 题意:有个保险箱子是n位数字编码,当正确输入最后一位编码后就会打开(即输入任意多的数字只有最后n位数字有效)……要选择一个好的数字序列,最 ...
- poj 2337(单向欧拉路的判断以及输出)
Catenyms Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11648 Accepted: 3036 Descrip ...
- poj 1780 Code
//题目描述:KEY公司开发出一种新的保险箱.要打开保险箱,不需要钥匙,但需要输入一个正确的.由n位数字组成的编码.这种保险箱有几种类型,从给小孩子玩的玩具(2位数字编码)到军用型的保险箱(6位数字编 ...
- POJ 1637 Sightseeing tour (混合图欧拉路判定)
Sightseeing tour Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6986 Accepted: 2901 ...
- poj 1386 Play on Words(有向图欧拉路+并查集)
题目链接:http://poj.org/problem?id=1386 思路分析:该问题要求判断单词是否能连接成一条直线,转换为图论问题:将单词的首字母和尾字母看做一个点,每个单词描述了一条从首字母指 ...
- POJ 2513 - Colored Sticks - [欧拉路][图的连通性][字典树]
题目链接: http://poj.org/problem?id=2513 http://bailian.openjudge.cn/practice/2513?lang=en_US Time Limit ...
随机推荐
- Day12(补充) Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
- 常用的gnuradio 模块
---恢复内容开始--- 参考:http://gnuradio.org/redmine/projects/gnuradio/wiki/TutorialsWritePythonApplications ...
- mysql的SQL_CALC_FOUND_ROWS 使用
mysql的SQL_CALC_FOUND_ROWS 使用 标签: sqlmysqltable 2007-02-27 11:40 5073人阅读 评论(0) 收藏 举报 分类: Mysql数据库技术( ...
- 1、MyBatisNet的安装使用
用到的几个DLL按理说应该到官网下载,但这个官网是谷大哥的,不知道是不是被屏蔽,总打不开,幸好从别人的程序里拷过来一份,直接放在自己的程序里就行! 程序结构如下: Providers.config,S ...
- Kaggle Bike Sharing Demand Prediction – How I got in top 5 percentile of participants?
Kaggle Bike Sharing Demand Prediction – How I got in top 5 percentile of participants? Introduction ...
- Corn Fields
poj3254:http://poj.org/problem?id=3254 题意:给以n*m的方格,方格中有1或者0,在1的地方可以放置一个物品,但是在物品的上下左右不能有不物品,也可以不放,问你最 ...
- 硬盘IO,SAS,SATA,和HD TUNE
SAS的接口技术可以向下兼容SATA.具体来说,二者的兼容性主要体现在物理层和协议层的兼容. SAS系统的背板(Backplane)既可以连接具有双端口.高性能的SAS驱动器,也可以连接高容量.低成本 ...
- Delphi调用WINAPI时到底应该是指针还是结构体(注意是Delphi变量本身就是指针)
看MSDN,GetWindowRect的说明如下: BOOL WINAPI GetWindowRect( _In_ HWND hWnd, _Out_ LPRECT lpRect // 注意,没* ...
- 物理卷操作命令:pvcreate,pvscan,pvdisplay.卷组操作命令:vgcreate,vgdisplay.
新硬盘创建LVM系统过程. 物理卷操作命令:pvcreate,pvscan,pvdisplay. 卷组操作命令:vgcreate,vgdisplay. 逻辑卷操作命令:lvcreate,lvdispl ...
- 数据结构(线段树):CodeForces 145E Lucky Queries
E. Lucky Queries time limit per test 3 seconds memory limit per test 256 megabytes input standard in ...