HDU 5402(Travelling Salesman Problem-构造矩阵对角最长不相交路径)
Travelling Salesman Problem
Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 898 Accepted Submission(s): 327
Special Judge
n
rows and m
columns. There is a non-negative number in each cell. Teacher Mai wants to walk from the top left corner
(1,1)
to the bottom right corner (n,m)
He can choose one direction and walk to this adjacent cell. However, he can't go out of the maze, and he can't visit a cell more than once.
Teacher Mai wants to maximize the sum of numbers in his path. And you need to print this path.
For each test case, the first line contains two numbers
n,m(1≤n,m≤100,n∗m≥2)
In following n
lines, each line contains m
numbers. The j
number in the i
line means the number in the cell (i,j)
Every number in the cell is not more than 10
In the next line you should print a string consisting of "L","R","U" and "D", which represents the path you find. If you are in the cell
(x,y)
"L" means you walk to cell (x,y−1)
"R" means you walk to cell (x,y+1)
"U" means you walk to cell (x−1,y)
"D" means you walk to cell (x+1,y)
3 3
2 3 3
3 3 3
3 3 2
25
RRDLLDRR
pid=5421" target="_blank">5421
pid=5420" target="_blank">5420
5419 5418pid=5417" target="_blank">5417
当n,m有一个奇数时,‘S形’可全取。
否则至少要少取一个,
假设少取(mx,my) ,当mx+my为偶数时,必定有一个与(mx,my)相邻的不能取
否则必能全取剩下的。(‘S形’+特判2行‘长城形’)
#include<bits/stdc++.h>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])
#define Lson (x<<1)
#define Rson ((x<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,127,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define INF (2139062143)
#define F (100000007)
#define MAXN (100+10)
typedef long long ll;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return (a-b+llabs(a-b)/F*F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
int n,m;
ll a[MAXN][MAXN];
int main()
{
// freopen("Travelling.in","r",stdin); while(cin>>n>>m) {
ll sum=0,mi=INF;int mx,my;
For(i,n) For(j,m) {
scanf("%lld",&a[i][j]),sum+=a[i][j];
if (mi>a[i][j]&&(i+j)%2==1)
mi=min(mi,a[i][j]),mx=i,my=j;
}
if (n%2==0&&m%2==0)
{
cout<<sum-mi<<endl; if (mx%2==1) {
For(i,mx-1)
{
if (i&1) {For(j,m-1) putchar('R');}
else {For(j,m-1) putchar('L'); }
if (i<n) putchar('D');
} int tx=mx,ty=1;
int p=0;
For(j,m)
{
if (my==j) {if (j<m) putchar('R');continue;}
if (p==0) printf("D");
else printf("U");
p^=1;
if (j<m) putchar('R');
}
Fork(i,mx+2,n)
{
putchar('D');
if ((i&1)^1) {For(j,m-1) putchar('R');}
else {For(j,m-1) putchar('L'); }
}
} if (my%2==1) {
For(i,my-1)
{
if (i&1) {For(j,n-1) putchar('D'); }
else {For(j,n-1) putchar('U'); }
if (i<m) putchar('R');
} int tx=1,ty=my;
int p=0;
For(j,n)
{
if (mx==j) {if (j<n) putchar('D');continue;}
if (p==0) printf("R");
else printf("L");
p^=1;
if (j<n) putchar('D');
} Fork(i,my+2,m)
{
putchar('R');
if ((i&1)^1) {For(j,n-1) putchar('D'); }
else {For(j,n-1) putchar('U'); }
}
} }
else {
cout<<sum<<endl;
if (n%2) {
For(i,n)
{
if (i&1) {For(j,m-1) putchar('R');}
else {For(j,m-1) putchar('L'); }
if (i<n) putchar('D');
}
} else {
For(i,m)
{
if (i&1) {For(j,n-1) putchar('D'); }
else {For(j,n-1) putchar('U'); }
if (i<m) putchar('R');
}
}
}
cout<<endl;
} return 0;
}
HDU 5402(Travelling Salesman Problem-构造矩阵对角最长不相交路径)的更多相关文章
- HDU 5402 Travelling Salesman Problem (构造)(好题)
大致题意:n*m的非负数矩阵,从(1,1) 仅仅能向四面走,一直走到(n,m)为终点.路径的权就是数的和.输出一条权值最大的路径方案 思路:因为这是非负数,要是有负数就是神题了,要是n,m中有一个是奇 ...
- 构造 - HDU 5402 Travelling Salesman Problem
Travelling Salesman Problem Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=5402 Mean: 现有一 ...
- HDU 5402 Travelling Salesman Problem (模拟 有规律)(左上角到右下角路径权值最大,输出路径)
Travelling Salesman Problem Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (J ...
- HDU 5402 Travelling Salesman Problem(棋盘染色 构造 多校啊)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5402 Problem Description Teacher Mai is in a maze wit ...
- HDU 5402 Travelling Salesman Problem(多校9 模拟)
题目链接:pid=5402">http://acm.hdu.edu.cn/showproblem.php?pid=5402 题意:给出一个n×m的矩阵,位置(i.j)有一个非负权值. ...
- hdu 5402 Travelling Salesman Problem(大模拟)
Problem Description Teacher Mai ,) to the bottom right corner (n,m). He can choose one direction and ...
- hdu 5402 Travelling Salesman Problem (技巧,未写完)
题意:给一个n*m的矩阵,每个格子中有一个数字,每个格子仅可以走一次,问从(1,1)走到(n,m) 的路径点权之和. 思路: 想了挺久,就是有个问题不能短时间证明,所以不敢下手. 显然只要n和m其中一 ...
- HDU 5402 : Travelling Salesman Problem
题目大意:n*m的格子,从左上角走到右下角,每个格子只能走一遍,每个格子上有一个非负数,要让途径的数字和最大,最后要输出路径 思路:显然茹果n,m有一个是奇数的话所有格子的数字都能被我吃到,如果都是偶 ...
- HDOJ 5402 Travelling Salesman Problem 模拟
行数或列数为奇数就能够所有走完. 行数和列数都是偶数,能够选择空出一个(x+y)为奇数的点. 假设要空出一个(x+y)为偶数的点,则必须空出其它(x+y)为奇数的点 Travelling Salesm ...
随机推荐
- 简单使用CSS3实现炫酷读者墙效果
读者墙,在很多网站上都有,没有遇到过的,可以参考度娘:读者墙http://www.baidu.com/s?wd=%B6%C1%D5%DF%C7%BD 使用基础的Html和CSS写出雏形 需要一提的是头 ...
- 值得收藏的十二条Jquery随身笔记
1.关于页面元素的引用 通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用do ...
- Convert CString to ANSI string in UNICODE projects
Convert CString to ANSI string in UNICODE projects Quick Answer: use an intermediate CStringA. Norma ...
- CSDN-Code平台公钥设置
近期,把自己的2个比較重要的项目,中国象棋-个人官网,放到了CSDN的Code平台.当然,眼下是私有的,有开源部分项目的计划. 开发过程中,我是使用Windows平台的,工作和娱乐两不误. 近期,想要 ...
- 30款免费的手机UI设计资源
在 原型设计阶段,我们会尽量寻找一些灵感刺激大脑,从而让我们的想象力飞-灵感给了我们很好的开始,但是当我们把灵感化为现实的时候,又需要一些实用而又高 效的组件来完成.即使你有非常善于把灵感实例化在草稿 ...
- Oracle综合数据库管理命令集
sqlplus SANKYU/SANKYU@ORADB_192.168.25.235 cmd: exp .......(最后不要加;号)--sankyuexp SANKYU/SANKYU@SUNNY ...
- C#.NET常见问题(FAQ)-如何捕捉窗体关闭的事件,弹窗确认是否退出
首先定位到窗体的FormClosing事件中,写关闭之前要执行的方法名称 一般只需要添加下面的代码即可实现窗体关闭的时候提示是否确认退出 //捕捉窗体Close事件,关闭窗口时提示 if (Mes ...
- Jetty:配置上下文
这篇文件讲述配置Jetty上下文的各种选项. 设置上下文路径 上下文路径是一个URL路径的前缀,用于将一个输入请求相应到相应的上下文.Java Servlet Server的URL通常的格式为:htt ...
- Ubuntu 源码方式安装Subversion
使用到的安装包: apr-1.5.1.tar.gz apr-util-1.5.3.tar.gz pcre-8.35.tar.gz httpd-2.4.9.tar.bz2 subversion-1.8. ...
- 使用RunWith注解改变JUnit的默认执行类,并实现自已的Listener
使用RunWith注解改变JUnit的默认执行类,并实现自已的Listener在平时的单元测试,如果不使用RunWith注解,那么JUnit将会采用默认的执行类Suite执行,如下类: public ...