HDU 5402 Travelling Salesman Problem
来源:互联网 发布:阿里云域名注册 编辑:程序博客网 时间:2024/05/17 04:09
HDU 5402 Travelling Salesman Problem
/**HDU 5402 Travelling Salesman Problem如果行列有一个是奇数,一定可以通过蛇形路径走完全程否则,将所有位置黑白染色,有一个白色位置的路径无法走到找出最小的白色路径,构造方式是不走这个路径就可以了*/#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>using namespace std;int n,m;char s[10005];int cor;void fun(int l,int t){ char L,R,C; int len; if(t==1){len=m;L='L';R='R';C='D';} else{len=n;L='U';R='D';C='R';} if(l==1) { for(int i=1;i<len;i++) s[cor++]=R; s[cor++]=C; for(int i=1;i<len;i++) s[cor++]=L; s[cor++]=C; } else { for(int i=1;i<len;i++) s[cor++]=L; s[cor++]=C; for(int i=1;i<len;i++) s[cor++]=R; s[cor++]=C; }}int dir[3][2]={1,0,-1,0,0,1};bool b[3][105];void out(int x,int y){ memset(b,0,sizeof(b)); b[x][y]=true; b[1][1]=true; x=1,y=1; while(x!=2||y!=m){ for(int i=0;i<3;i++){ int xx=x+dir[i][0]; int yy=y+dir[i][1]; if(xx>=1&&yy>=1&&xx<=2&&yy<=m&&!b[xx][yy]){ b[xx][yy]=true; if(i==0) s[cor++]='D'; else if(i==1) s[cor++]='U'; else s[cor++]='R'; x=xx; y=yy; } } }}int main(){ while(~scanf("%d%d",&n,&m)){ int sum=0,x,y,Min=1000000,a; cor=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ scanf("%d",&a); sum+=a; if((i+j)%2==1&&a<Min){ Min=a;x=i;y=j; } } } if(n%2||m%2){ printf("%d\n",sum); if(n%2){ for(int i=1;i<n;i+=2) fun(1,1); for(int i=1;i<m;i++) s[cor++]='R'; } else{ for(int i=1;i<m;i+=2) fun(1,0); for(int i=1;i<n;i++) s[cor++]='D'; } s[n*m-1]='\0'; printf("%s\n",s); } else{ printf("%d\n",sum-Min); int flag=0; for(int i=1;i<n;i+=2){ if(x==i) { out(1,y);flag=1; if(i+2<n) s[cor++]='D'; } else if(x==i+1) { out(2,y);flag=1; if(i+2<n) s[cor++]='D'; } else if(flag) fun(0,1); else fun(1,1); } s[n*m-2]='\0'; printf("%s\n",s); } } return 0;}
0 0
- HDU 5402 Travelling Salesman Problem
- HDU 5402 Travelling Salesman Problem
- hdu 5402 Travelling Salesman Problem
- hdu 5402 Travelling Salesman Problem
- hdu 5402 Travelling Salesman Problem
- Travelling Salesman Problem (hdu 5402 模拟)
- HDU-5402 Travelling Salesman Problem(模拟)
- 【HDU 5402】Travelling Salesman Problem(构造)
- HDU 5402 (构造题)Travelling Salesman Problem
- hdu 5402 Travelling Salesman Problem (构造)
- hdu 5402 Travelling Salesman Problem 模拟构造
- hdu 5402 Travelling Salesman Problem(构造)
- hdu 5402 Travelling Salesman Problem(构造+模拟)
- 【HDOJ 5402】Travelling Salesman Problem
- HDU 5402 Travelling Salesman Problem(多校9 模拟)
- HDU 5402 Travelling Salesman Problem(棋盘染色 构造 多校啊)
- hdu(5402)——Travelling Salesman Problem(模拟题)
- HDU 5402 Travelling Salesman Problem (MUT#9 暴力模拟)
- mac 上wget安装
- 二维线段树(单点更新)
- 快速排序及其优化
- ajax提交异步,同步请求不同
- 2015年最新Scala语言视频教程
- HDU 5402 Travelling Salesman Problem
- 从ios新手入门开发到app store上架,我们要走的路
- /proc/dev/net
- 在SpringMVC中获取request对象的几种方式
- 一文让你彻底了解iOS字体相关知识
- JDBC简介(1)
- ext.net 后台方法调用
- Xcode 管理provisioning profile
- android布局------RelativeLayout(相对布局)详解