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 ...
随机推荐
- java的回调方式
经常写js的回调,js的回调很简单,直接传方法名称,但是java中方法不能作为参数传递 但是java中可以传一个对象,在对象中编写多个方法,然后作为参数传递到对象里以后,就可以在适当的时机调用该对象里 ...
- 拦截导弹问题(Noip1999)
1322:[例6.4]拦截导弹问题(Noip1999) 时间限制: 1000 ms 内存限制: 65536 KB提交数: 3843 通过数: 1373 [题目描述] 某国为了防 ...
- ubuntu 12.04 配置iscsi共享及挂载iscsi共享
一.配置ubuntu 下iscsi下的target 1.配置iscsi-target: sudo apt-get install iscsi* 2.配置一个简单的iscsi target: iscsi ...
- Parker Gear Pump - Gear Pump Seal Is More O-Ring: Role
Parker Gear Pump introduction Gear pump lip seal is mainly used in reciprocating dynamic seals. C ...
- uglifyjs压缩批处理,.bat文件启动
我们不可能每次都打开cmd去键入压缩执行代码,容易写错不说(如上面那个结果图),还耗时,想想都会让人疯掉. 懒人有懒法,花了点功夫,折腾了一个批处理文件,以后,想要压缩JS,只要双击运行这个.bat文 ...
- getDate() 获取时间 如2018年09月21日 11:32:11
function p(s) { return s < 10 ? '0' + s: s;} function getDate() { var myDate = new Date(); //获取当前 ...
- mybatis保存时将数据库自动生成的主键返回
场景 保存订单数据和订单详情数据时需要将订单的主键作为关联子段添加到明细表中,需要将保存订单时的主键返回给供保存明细表时使用 添加xml中新增数据时的配置 <insert id="in ...
- zabbix源码安装后,设置为服务启动和关闭
zabbix源码安装,使用service启动与关闭服务 1. zabbix客户端的系统服务脚本 1.1 拷贝启动脚本 zabbix的源码提供了系统服务脚本,在/usr/local/src/zabbix ...
- Tensor数据类型
目录 Tensor数据类型 属性 数据类型判断 数据类型转换 tensor转numpy Tensor数据类型 list: [1,1.2,'hello'] ,存储图片占用内存非常大 np.array, ...
- Centos7 静态IP配置
先将虚拟机设置为桥接模式: 虚拟机网络将VMnet8设置为NAT模式: 查看本机IP地址,ipconfig,记住ipv4地址和默认网关地址,等会配置的时候要用 启动Centos,进入终端模式,设置IP ...