博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 5402 Travelling Salesman Problem(多校9 模拟)
阅读量:6948 次
发布时间:2019-06-27

本文共 1954 字,大约阅读时间需要 6 分钟。

题目链接:

题意:给出一个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 
#include
#include
#include
#include
#include
#include
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;}
你可能感兴趣的文章
PostgreSQL 在路上的特性 - 远离触发器, 拥抱内置分区
查看>>
如何利用Photoshop扣取图片上的字体(一)
查看>>
jsp fmt标签详解
查看>>
Springmvc案例1----基于spring2.5的采用xml配置
查看>>
创建自定义数据源
查看>>
嵌入式linux------SDL移植(am335x下显示yuv420)
查看>>
【原创】erlang 模块之 epmd
查看>>
备用java方法
查看>>
有状态的 web 应用
查看>>
System V 消息队列
查看>>
管道和FIFO
查看>>
Use Excel Pivot Table as a BI tool
查看>>
QDialog之屏蔽Esc键
查看>>
Cocos2d-x-v3场景切换
查看>>
[置顶]白话贝叶斯理论及在足球比赛结果预测中的应用和C#实现
查看>>
HotSpotVM 对象机制实现浅析#1
查看>>
[android]android自动化测试
查看>>
为代码签名,供后人瞻仰或唾弃,你敢吗?
查看>>
Java笔记:集合框架实现原理
查看>>
用Objective-C写了一个简单的批量更改文件名的程序
查看>>