题目链接:

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)这个点均能够走完剩下的全部点。

剩下模拟就可以。

  1. n,m当中一个为奇数的时候,相似下图走法就可以。顺着偶数边走,若均为奇数,则随意都可。
  2. n。m均为偶数,先找出最小的位置(ni,nj)且ni和nj奇偶不同的位置(下图中(ni,nj)为黑点位置)。
    1. 假设nj为奇数,相似下图走法就可以。
    2. 假设nj为偶数,相似下图走法就可以。
    3. 特别的是nj为1的时候由于不能向左分出一列。所以向右分出一列。特判就可以。

代码。

#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 模拟)的更多相关文章

  1. 构造 - HDU 5402 Travelling Salesman Problem

    Travelling Salesman Problem Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=5402 Mean: 现有一 ...

  2. HDU 5402 Travelling Salesman Problem (构造)(好题)

    大致题意:n*m的非负数矩阵,从(1,1) 仅仅能向四面走,一直走到(n,m)为终点.路径的权就是数的和.输出一条权值最大的路径方案 思路:因为这是非负数,要是有负数就是神题了,要是n,m中有一个是奇 ...

  3. HDU 5402 Travelling Salesman Problem (模拟 有规律)(左上角到右下角路径权值最大,输出路径)

    Travelling Salesman Problem Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (J ...

  4. HDU 5402 Travelling Salesman Problem(棋盘染色 构造 多校啊)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5402 Problem Description Teacher Mai is in a maze wit ...

  5. hdu 5402 Travelling Salesman Problem(大模拟)

    Problem Description Teacher Mai ,) to the bottom right corner (n,m). He can choose one direction and ...

  6. HDU 5402 : Travelling Salesman Problem

    题目大意:n*m的格子,从左上角走到右下角,每个格子只能走一遍,每个格子上有一个非负数,要让途径的数字和最大,最后要输出路径 思路:显然茹果n,m有一个是奇数的话所有格子的数字都能被我吃到,如果都是偶 ...

  7. hdu 5402 Travelling Salesman Problem (技巧,未写完)

    题意:给一个n*m的矩阵,每个格子中有一个数字,每个格子仅可以走一次,问从(1,1)走到(n,m) 的路径点权之和. 思路: 想了挺久,就是有个问题不能短时间证明,所以不敢下手. 显然只要n和m其中一 ...

  8. HDU 5402(Travelling Salesman Problem-构造矩阵对角最长不相交路径)

    Travelling Salesman Problem Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (J ...

  9. HDOJ 5402 Travelling Salesman Problem 模拟

    行数或列数为奇数就能够所有走完. 行数和列数都是偶数,能够选择空出一个(x+y)为奇数的点. 假设要空出一个(x+y)为偶数的点,则必须空出其它(x+y)为奇数的点 Travelling Salesm ...

随机推荐

  1. MySQL一对一:一对多:多对多

    学生表和课程表可以多对多 一个学生可以学多门课程 一门课程可以有多个学生: 多对多 *** 一个学生对应一个班级 一个班级对应多个学生: 一对多 *** 一个老师对应多个学生 多个学生对应一个老师:一 ...

  2. 兼容浏览器 回车键 keydown事件

    $("body").keydown(function(event){   if(event.keyCode==13){   //body   } }); 重点:$("bo ...

  3. 一小时学会用Python Socket 开发可并发的FTP服务器!!

    socket是什么 什么是socket所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过"套接字"向网络发出请求 ...

  4. [cocos2dx UI] CCLabelAtlas 为什么不显示最后一个字

    CClabelAtlas优点,基本用法等我就不说了,这里说一个和美术配合时的一个坑!就是图片的最后一位怎么也不显示,如下图中的冒号不会显示 查了ASCII码表,这个冒号的值为58,就是在9(57)的后 ...

  5. [Python]Pandas简单入门(转)

    本篇文章转自 https://colab.research.google.com/notebooks/mlcc/intro_to_pandas.ipynb?hl=zh-cn#scrollTo=zCOn ...

  6. 连接XenServer中VM的Console。

    在XenServer6.2中的虚拟机,连接Guest VM串口的方法: 1. 首先在Guest VM中设置串口: 我的是CentOS6: 修改/etc/grub/grub.conf: 2. 修改完后, ...

  7. Codeforces Round #240 (Div. 2) B 好题

    B. Mashmokh and Tokens time limit per test 1 second memory limit per test 256 megabytes input standa ...

  8. [暑假集训--数论]poj1061 青蛙的约会

    Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事 ...

  9. 勒索病毒 -- “永恒之蓝”NSA 武器免疫工具

    “永恒之蓝”NSA 武器免疫工具 针对 445 端口:445端口是一个毁誉参半的端口,他和139端口一起是IPC$入侵的主要通道.有了它我们可以在局域网中轻松访问各种共享文件夹或共享打印机,但也正是因 ...

  10. redux使用需要注意的地方

    1. react和redux没有直接联系,当react需要结合redux使用的时候,需要引入 react-redux ,该插件提供了connet等方法使得react可以注入redux属性. 2. re ...