被某题卡SB了,结果这题也没读好。。。以为每一个格子能够有负数就当搜索做了。怎么想也搜只是去,后来发现每一个格子是非负数,那么肯定就是构造题。

题解例如以下:

首先假设nn为奇数或者mm为奇数,那么显然能够遍历整个棋盘。

如果n,mn,m都为偶数,那么讲棋盘黑白染色,如果(1,1)(1,1)和(n,m)(n,m)都为黑色,那么这条路径中黑格个数比白格个数多11,而棋盘中黑白格子个数同样,所以必定有一个白格不会被经过,所以选择白格中权值最小的不经过。

构造方法是这样,首先RRRRDLLLLD这种路径走到这个格子所在行或者上一行。然后DRUR这样走到这个格子的所在列或者前一列。然后绕过这个格子。

然后走完这两行,接着按LLLLDRRRR这种路径往下走。

这题须要说明一下为什么这么选,由于假设你选的不是 (i,j)互为奇偶的格子的话,肯定有其余的(i,j)互为奇偶的格子不能被走到。假设选择的话,仅仅有这一个格子不会被走到,所以依据贪心肯定要选这个格子了.

恩。。挺脑洞的一题。写起来倒是不难。

#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = 105;
const int  INF = (1 << 30);
int mat[maxn][maxn];
int n,m,sum,minv,posx,posy;
void special_solve(){printf("%d\n",sum - minv);if(!(posx & 1)){for(int i = 0; i < posx; i++){char c = i & 1 ?

'L' : 'R'; for(int j = 1; j < m; j++) printf("%c",c); printf("D"); } int base = 0; for(int i = 0; i < m; i++){ char c = (i + base) & 1 ? 'U' : 'D'; if(i != posy) printf("%c",c); else base ++; if(i < m - 1) printf("R"); } for(int i = posx + 2; i < n; i++){ printf("D"); char c = i & 1 ? 'R' : 'L'; for(int j = 1; j < m; j++) printf("%c",c); } } else{ for(int i = 0; i < posx - 1; i++){ char c = i & 1 ? 'L' : 'R'; for(int j = 1; j < m; j++) printf("%c",c); printf("D"); } int base = 0; for(int i = 0; i < m; i++){ char c = (i + base) & 1 ?

'U' : 'D'; if(i != posy) printf("%c",c); else base ++; if(i < m - 1) printf("R"); } for(int i = posx + 1; i < n; i++){ printf("D"); char c = i & 1 ? 'R' : 'L'; for(int j = 1; j < m; j++) printf("%c",c); } } } int main(){ while(scanf("%d%d",&n,&m) != EOF){ sum = 0; minv = INF; for(int i = 0; i < n; i++) for(int j = 0; j < m; j++){ scanf("%d",&mat[i][j]); sum += mat[i][j]; if((i + j) & 1){ if(minv > mat[i][j]){ posx = i; posy = j; minv = mat[i][j]; } } } if(n & 1){ printf("%d\n",sum); for(int i = 0; i < n; i++){ char c = i & 1 ? 'L' : 'R'; for(int j = 1; j < m; j++) printf("%c",c); if(i != n - 1) printf("D"); } } else if(m & 1){ printf("%d\n",sum); for(int i = 0; i < m; i++){ char c = i & 1 ? 'U' : 'D'; for(int j = 1; j < n; j++) printf("%c",c); if(i != m - 1) printf("R"); } } else special_solve(); puts(""); } return 0; }

转载于:https://www.cnblogs.com/jzssuanfa/p/6939836.html

【HDU 5402】Travelling Salesman Problem(构造)相关推荐

  1. PAT甲级1150 Travelling Salesman Problem:[C++题解]旅行商问题、图论

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 旅行商问题:访问每个城市并回到原城市的最短路. 思路: 1)判断相邻两点有无距离(NA):2)每个点是否都能到:3)是否是回路:4) ...

  2. cf1504. Travelling Salesman Problem

    cf1504. Travelling Salesman Problem 题意: n个城市,编号1~n,每个城市有美丽值a[i],现在要从城市1出发,其他所有城市走一遍,最后回到城市1,城市i到j的花费 ...

  3. PAT 1150 Travelling Salesman Problem(25 分)- 甲级

    The "travelling salesman problem" asks the following question: "Given a list of citie ...

  4. 单目标应用:求解单仓库多旅行商问题(Single-Depot Multiple Travelling Salesman Problem, SD-MTSP)的人工兔优化算法ARO

    一.算法简介 人工兔优化算法(Artificial Rabbits Optimization ,ARO)由Liying Wang等人于2022年提出,该算法模拟了兔子的生存策略,包括绕道觅食和随机躲藏 ...

  5. 1150 Travelling Salesman Problem (25 分)【难度: 难 / 知识点: 图 模拟 未完成】

    https://pintia.cn/problem-sets/994805342720868352/problems/1038430013544464384

  6. Codeforces Round #712 (Div. 2) E. Travelling Salesman Problem 思维转换

    传送门 文章目录 题意: 思路: 题意: 给你nnn个点,从iii到jjj的花费是max(ci,aj−ai)max(c_i,a_j-a_i)max(ci​,aj​−ai​),求从111开始经过每个点再 ...

  7. 旅行商问题(Travelling salesman problem, TSP)

    旅行商问题建模与证明 – 个人学习记录

  8. 旅行商问题(travelling salesman problem, TSP) 解题报告

    旅行商问题是个熟知的问题.这次是因为coursera上面选的算法课而写代码实现.这里做个简单总结. 测试程序: 25 20833.3333 17100.0000 20900.0000 17066.66 ...

  9. JavaScript实现Travelling Salesman算法(附完整源码)

    JavaScript实现Travelling Salesman算法(附完整源码) bfTravellingSalesman.js完整源代码 bfTravellingSalesman.js完整源代码 f ...

最新文章

  1. 【网络流24题】解题报告:C、最小路径覆盖问题(有向无环图最小路径覆盖)(最大流)
  2. ceph 代码分析 读_Ceph OSD磁盘异常流量问题分析
  3. UNICODE编码细节与个人使用总结
  4. element ui 设置全局样式不起作用
  5. 安装 | Matlab2022a下载及新功能一览
  6. 现在不使用ZeroClipboard我们也能实现复制功能(转)
  7. java11模块化开发_【JDK 11】关于 Java 模块系统,看这一篇就够了
  8. enkey java_近期的Java项目(前端)
  9. Win32ASM学习[14]:符号扩展指令: CBW,CWDE,CDQ,CWD
  10. D3 二次方曲线与切线
  11. quartz的负载均衡
  12. 简单的3个SQL视图搞定所有SqlServer数据库字典 (转载)
  13. 开方根运算——没有FPU的解决办法
  14. mongodb 笔记
  15. 高程(三)--- Date
  16. (源代码)用Python制作疫情的实时数据地图(PS:全国以及每个省)
  17. 图形形状及颜色识别【Python大作业】
  18. 数据分析与处理python实验报告_实验报告的实验数据分析与处理怎么写?
  19. c# MODBUS协议源码 上/下位机源码烧写Flash工具
  20. XM外汇官网 xm-cnfx.com 外汇新手交易者必备!选择交易商一定要看的7个方面

热门文章

  1. 关于JS点击button之灵活替换改变内容方法
  2. 下载r包IlluminaHumanMethylation450kanno.ilmn12.hg19
  3. 解决R 4.0版本包的安装错误
  4. aop对请求后端的参数修改_Spring Boot AOP之对请求的参数入参与返回结果进行拦截处理...
  5. chromiumwebbrowser 使用_CefSharp ChromiumWebBrowser初始化完成后加载网址
  6. php写邮件空格_PHP 邮件漏洞小结
  7. stream filter_Stream 流实践
  8. 记录一下自动白平衡与自动亮度
  9. python入门学习基础数据结构与语法
  10. python能处理多大的数据包-利用Python进行数据处理(更新)