2015 Multi-University Training Contest 9-1007 Travelling Salesman Problem
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-th
number in the i-th
line means the number in the cell (i,j).
Every number in the cell is not more than 104.
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
这是一道有趣的问题,怎样才干从左上到右下使经过路径和最大,每一个数字都是正数,那么假设能走全,肯定是走全比較好,所以当n||m有奇数时。可直接构造之,假设均为偶数时,能够发现,我能够绕啊绕的绕过一个点,剩下的都遍历,横纵坐标和偶数的无法仅仅避开这一个点。所以要想绕开这个点,必需要附带至少一个其他点且是能够单独避开的奇点。所以我们仅仅要找到偶点中最小的那个点绕开就好了。
这样全部情况都构造出来了。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
void print(int x,int y,char dir)
{
for(int i=x;i<y;i++)
printf("%c",dir);
} int f[111][111];
long long ret=0;
int x,y;
int m,n,mi;
int main()
{
while(scanf("%d%d",&m,&n)==2)
{
ret=0;
mi=0x3f3f3f3f;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
scanf("%d",&f[i][j]);
ret+=f[i][j];
if((i+j)%2==1 && f[i][j]<mi)
{
mi=f[i][j];
x=i;
y=j;
}
}
if(m%2 == 1|| n%2==1)
{
cout<<ret<<'\n';
if(m%2==1)
{
for(int i=1;i<=m;i++)
{
if(i%2==1)
print(1,n,'R');
else
print(1,n,'L');
if(i!=m)
{
print(i,i+1,'D');
}
}
}
else
{
for(int i=1;i<=n;i++)
{
if(i%2==1)
print(1,m,'D');
else
print(1,m,'U');
if(i!=n)
print(i,i+1,'R');
}
}
}
else
{
cout<<ret-f[x][y]<<'\n';
if(x%2==1)
{
for(int i=1;i<x;i++)
{
if(i%2==1)
print(1,n,'R');
else
print(1,n,'L');
print(i,i+1,'D');
}
for(int i=1;i<=n;i++)
{
if(i<y)
if(i%2==1)
print(1,2,'D');
else
print(1,2,'U');
else
if(i>y)
{
if(i%2==0)
print(1,2,'D');
else
print(1,2,'U');
}
if(i!=n)
print(1,2,'R');
}
for(int i=x+2;i<=m;i++)
{
print(1,2,'D');
if(i%2==1)
print(1,n,'L');
else
print(1,n,'R');
}
}
else
{
for(int i=1;i<y;i++)
{
if(i%2==1)
print(1,m,'D');
else
print(1,m,'U');
print(1,2,'R');
}
for(int i=1;i<=m;i++)
{
if(i<x)
{
if(i%2==1)
print(1,2,'R');
else
print(1,2,'L');
}
else
if(i>x)
{
if(i%2==1)
print(1,2,'L');
else
print(1,2,'R');
}
if(i!=m)
print(1,2,'D');
}
for(int i=y+2;i<=n;i++)
{
print(1,2,'R');
if(i%2==1)
print(1,m,'U');
else
print(1,m,'D');
}
}
}
printf("\n");
}
return 0;
}
2015 Multi-University Training Contest 9-1007 Travelling Salesman Problem的更多相关文章
- HDU 5402 Travelling Salesman Problem (构造)(好题)
大致题意:n*m的非负数矩阵,从(1,1) 仅仅能向四面走,一直走到(n,m)为终点.路径的权就是数的和.输出一条权值最大的路径方案 思路:因为这是非负数,要是有负数就是神题了,要是n,m中有一个是奇 ...
- HDOJ 5402 Travelling Salesman Problem 模拟
行数或列数为奇数就能够所有走完. 行数和列数都是偶数,能够选择空出一个(x+y)为奇数的点. 假设要空出一个(x+y)为偶数的点,则必须空出其它(x+y)为奇数的点 Travelling Salesm ...
- HDU 5402 Travelling Salesman Problem (模拟 有规律)(左上角到右下角路径权值最大,输出路径)
Travelling Salesman Problem Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (J ...
- PAT A1150 Travelling Salesman Problem (25 分)——图的遍历
The "travelling salesman problem" asks the following question: "Given a list of citie ...
- PAT 甲级 1150 Travelling Salesman Problem
https://pintia.cn/problem-sets/994805342720868352/problems/1038430013544464384 The "travelling ...
- 构造 - HDU 5402 Travelling Salesman Problem
Travelling Salesman Problem Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=5402 Mean: 现有一 ...
- 1150 Travelling Salesman Problem(25 分)
The "travelling salesman problem" asks the following question: "Given a list of citie ...
- PAT_A1150#Travelling Salesman Problem
Source: PAT A1150 Travelling Salesman Problem (25 分) Description: The "travelling salesman prob ...
- 1150 Travelling Salesman Problem
The "travelling salesman problem" asks the following question: "Given a list of citie ...
- PAT-1150(Travelling Salesman Problem)旅行商问题简化+模拟图+简单回路判断
Travelling Salesman Problem PAT-1150 #include<iostream> #include<cstring> #include<st ...
随机推荐
- CREATE TYPE - 定义一个新的数据类型
SYNOPSIS CREATE TYPE name AS ( attribute_name data_type [, ... ] ) CREATE TYPE name ( INPUT = input_ ...
- select 修改选中时候的默认默认样式 outline:none 把系统的线关了 然后自己再border一下
chrome 查看样式的时候默认没有 focus的样式,可以把选择器开开select 修改选中时候的默认默认样式 outline:none 把系统的线关了 然后自己再border一下input:foc ...
- Leetcode 54:Spiral Matrix 螺旋矩阵
54:Spiral Matrix 螺旋矩阵 Given a matrix of m x n elements (m rows, n columns), return all elements of t ...
- python 删除/查找重复项
l = [1,2,3,2,1] # l = ['你','我','他','她','你'] for i in l: print("the %s has found %s" % (i, ...
- RNN,LSTM,GRU基本原理的个人理解
记录一下对RNN,LSTM,GRU基本原理(正向过程以及简单的反向过程)的个人理解 RNN Recurrent Neural Networks,循环神经网络 (注意区别于recursive neura ...
- docker centos7 配置和宿主机同网段IP
docker centos7 配置和宿主机同网段IP 1.安装brctl 命令 # yum -y install bridge-utils 2.编辑网卡配置文件 # vi ifcfg-eno16777 ...
- 小程序调用支付报错:jsapi缺少参数: total_fee
这种情况通常是因为在调用的时候,package参数有问题导致: wx.requestPayment中package参数必须是package:"prepay_id=wx21********** ...
- CentOS7.4 搭建和使用telnet
1.先检查是否安装了telnet rpm -qa | grep telnet //检查你的CentOS是否安装了telnet和telnet-server rpm -qa xinetd //检查你的C ...
- AutoEncoders原理
目录 Auto-Encoders How to Train? Auto-Encoders How to Train?
- 关于SQL Server 的限制
经常被人问到关于SQL Server 的连接数限制, 或者最大的文件大小, 或者标准版和企业版的区别,以及Express上的 其实这些问题都可以在MSDN 上直接找到 SQL Server 2014 ...