HDU 5402 Travelling Salesman Problem(多校9 模拟)
题目链接: pid=5402">http://acm.hdu.edu.cn/showproblem.php?pid=5402
题意:给出一个n×m的矩阵,位置(i。j)有一个非负权值。
每一个点仅仅能经过一次。求从(1。1)到(n。m)权值总和最大的和。还需输出路径。
思路:由于走的点越多越好,所以得到规律,当n,m随意一个为奇数时。均能够走全然部点。
当n,m全为偶数时,当点(i。j)的i和j不同奇偶时,则除了(i,j)这个点均能够走完剩下的全部点。
剩下模拟就可以。
- n,m当中一个为奇数的时候,相似下图走法就可以。顺着偶数边走,若均为奇数,则随意都可。
- n。m均为偶数,先找出最小的位置(ni,nj)且ni和nj奇偶不同的位置(下图中(ni,nj)为黑点位置)。
- 假设nj为奇数,相似下图走法就可以。
- 假设nj为偶数,相似下图走法就可以。
- 特别的是nj为1的时候由于不能向左分出一列。所以向右分出一列。特判就可以。
- 假设nj为奇数,相似下图走法就可以。
代码。
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <queue>
#include <string>
#include <math.h>
using namespace std;
const int N = 1e2 + 10;
void out(int n, int m, char a, char b, char c) {
for (int i = 1; i <= n; i++) {
if (i > 1) printf("%c", a);
for (int j = 1; j < m; j++) {
if (i & 1) printf("%c", b);
else printf("%c", c);
}
}
}
int main() {
int n, m;
while (scanf("%d%d", &n, &m) != EOF) {
int ans = 0, tmp = 10005;
int ni, nj;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
int x;
scanf("%d", &x);
ans += x;
if (((i + j) & 1) && x < tmp) {
tmp = x;
ni = i;
nj = j;
}
}
}
if (n % 2 == 0 && m % 2 == 0)
ans -= tmp;
printf("%d\n", ans);
if (n & 1) {
out(n, m, 'D', 'R', 'L');
}
else if (m & 1) {
out(m, n, 'R', 'D', 'U');
}
else {
if (nj == 1) {
if (ni - 1 > 0) {
out(ni - 1, 2, 'D', 'R', 'L');
printf("D");
}
if (ni < n) {
printf("D");
out(n - ni, 2, 'D', 'L', 'R');
}
if (m > 2) {
printf("R");
out(m - 2, n, 'R', 'U', 'D');
}
printf("\n");
continue;
}
if (nj & 1) {
if (nj - 2 > 0) {
out(nj - 2, n, 'R', 'D', 'U');
printf("R");
}
if (n - ni > 0) {
out(n - ni, 2, 'U', 'R', 'L');
printf("U");
}
if (ni - 1 > 0) {
printf("U");
out(ni - 1, 2, 'U', 'R', 'L');
}
if (m - nj > 0) {
printf("R");
out(m - nj, n, 'R', 'D', 'U');
}
}
else {
if (nj - 2 > 0) {
out(nj - 2, n, 'R', 'D', 'U');
printf("R");
}
if (ni - 1 > 0) {
out(ni - 1, 2, 'D', 'R', 'L');
printf("D");
}
if (ni < n) {
printf("D");
out(n - ni, 2, 'D', 'R', 'L');
}
if (m - nj > 0) {
printf("R");
out(m - nj, n, 'R', 'U', 'D');
}
}
}
printf("\n");
}
return 0;
}HDU 5402 Travelling Salesman Problem(多校9 模拟)的更多相关文章
- 构造 - 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 (构造)(好题)
大致题意:n*m的非负数矩阵,从(1,1) 仅仅能向四面走,一直走到(n,m)为终点.路径的权就是数的和.输出一条权值最大的路径方案 思路:因为这是非负数,要是有负数就是神题了,要是n,m中有一个是奇 ...
- 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(大模拟)
Problem Description Teacher Mai ,) to the bottom right corner (n,m). He can choose one direction and ...
- HDU 5402 : Travelling Salesman Problem
题目大意:n*m的格子,从左上角走到右下角,每个格子只能走一遍,每个格子上有一个非负数,要让途径的数字和最大,最后要输出路径 思路:显然茹果n,m有一个是奇数的话所有格子的数字都能被我吃到,如果都是偶 ...
- hdu 5402 Travelling Salesman Problem (技巧,未写完)
题意:给一个n*m的矩阵,每个格子中有一个数字,每个格子仅可以走一次,问从(1,1)走到(n,m) 的路径点权之和. 思路: 想了挺久,就是有个问题不能短时间证明,所以不敢下手. 显然只要n和m其中一 ...
- HDU 5402(Travelling Salesman Problem-构造矩阵对角最长不相交路径)
Travelling Salesman Problem Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (J ...
- HDOJ 5402 Travelling Salesman Problem 模拟
行数或列数为奇数就能够所有走完. 行数和列数都是偶数,能够选择空出一个(x+y)为奇数的点. 假设要空出一个(x+y)为偶数的点,则必须空出其它(x+y)为奇数的点 Travelling Salesm ...
随机推荐
- 聊聊、Tomcat中文乱码和JVM设置
set JAVA_OPTS=%JAVA_OPTS% -server -Xms512m -Xmx512m -Dfile.encoding=GBK -Dsun.jnu.encoding=GBK
- 双网卡只有一个能ping通的解决办法
来源:http://blog.csdn.net/centerpoint/article/details/38542719 Linux默认启用了反向路由检查 如果2个网卡在一个Lan里面,那么服务器可能 ...
- python 字符编码与转码
一. 字符编码 ASCII: 一个字节,最多能表示255个字符 GB2312(1980年):一共收录了7445个字符,包括6763个汉字和682个其它符号. GBK1.0(1995年):收录了2188 ...
- idea调试查看mybitis发送的语句(引用)
MyBatis 的配置文件 Configuration 中有相关属性,设属性即可,不用再放一个 log4j.properties 文件. <configuration> <setti ...
- 在控制器“xxxx”上找不到与该请求匹配的操作
Message:"找不到与请求 URI"http://localhost:8091/Api/CommonApi/SelectBind/GetBudCategoryListByCID ...
- BZOJ 1051:[HAOI2006]受欢迎的牛(强连通分量)
受欢迎的牛Description每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么 ...
- node.js express 4.x 安装指南(Express不是内部或外部命令解决方案)
前几天express 推出了4.0,得知这个消息,自己尝试了一下,突然发现用以前的文档上的操作出现了各种问题.结果只能去看文档,现在在这个给大家分享下4.0版本的安装. 先说下如果需要用express ...
- 用jquery实现平滑的页面滚动效果
通过几句jquery代码实现页面平滑滚动到某一锚点的效果.实现代码来源于https://css-tricks.com/snippets/jquery/smooth-scrolling 实现的jquer ...
- [luogu1707] 刷题比赛 [矩阵快速幂]
题面: 传送门 思路: 一眼看上去是三个递推......好像还挺麻烦的 仔细观察一下,发现也就是一个线性递推,但是其中后面的常数项比较麻烦 观察一下,这里面有以下三个递推是比较麻烦的 第一个是$k^2 ...
- g2o安装
1.安装依赖项 sudo apt-get install libeigen3-dev libsuitesparse-dev libqt4-dev qt4-qmake 2.安装依赖项 libqglvi ...