一个矩阵,每个位置有一个非负整数,一个人从左上走到右下,不能走重复的格子,问得到的最大权值。

当长宽不都为偶数时,必然能走遍所有格子,横着从左到右,从右到左(或是竖着走)走完即可。

当长宽都是偶数时,必然只有一个格子走不到,黑白染色后,就是白色格子中的最小值走不到,别的全都可以走得到。

两行两行地走,如果没到不取的那个格子所在的那两行,那就横着从左到右,从右到左;如果到了这两行,就竖着循环走;过了这两行之后,就横着从右到左,从左到右。

#include<cstdio>
using namespace std;
bool co[105][105];
int n,m,a[105][105],T;
int main(){
// freopen("g.in","r",stdin);
scanf("%d",&T);
a[0][0]=2147483647;
for(;T;--T){
scanf("%d%d",&n,&m);
int sum=0;
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
scanf("%d",&a[i][j]);
sum+=a[i][j];
}
}
if(n%2==1){
printf("%d\n",sum);
for(int i=1;i<=n;++i){
for(int j=1;j<m;++j){
putchar(i%2==1 ? 'R' : 'L');
}
if(i!=n){
putchar('D');
}
}
puts("");
}
else if(n%2==0 && m%2==1){
printf("%d\n",sum);
for(int i=1;i<=m;++i){
for(int j=1;j<n;++j){
putchar(i%2==1 ? 'D' : 'U');
}
if(i!=m){
putchar('R');
}
}
puts("");
}
else{
for(int i=1;i<=n;++i){
bool pen=(i%2==1);
for(int j=1;j<=m;++j){
co[i][j]=pen;
pen^=1;
}
}
int x=0,y=0;
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
if(co[i][j]==0 && a[i][j]<a[x][y]){
x=i;
y=j;
}
}
}
sum-=a[x][y];
printf("%d\n",sum);
bool flag=0;
for(int i=1;i<=n;i+=2){
if(!flag && (i==x || i+1==x)){
bool tag=0;
for(int j=1;j<=m;++j){
if(j!=y){
putchar(tag==0 ? 'D' : 'U');
tag^=1;
}
if(j!=m){
putchar('R');
}
}
flag=1;
}
else if(!flag){
for(int j=1;j<m;++j){
putchar('R');
}
putchar('D');
for(int j=1;j<m;++j){
putchar('L');
}
}
else{
for(int j=1;j<m;++j){
putchar('L');
}
putchar('D');
for(int j=1;j<m;++j){
putchar('R');
}
}
if(i!=n-1){
putchar('D');
}
}
puts("");
}
}
return 0;
}

【推导】【构造】Petrozavodsk Summer Training Camp 2015 Day 2: Xudyh (TooSimple) Contest, Saturday, August 22, 2015 Problem G. Travelling Salesman Problem的更多相关文章

  1. 【推导】【单调性】Petrozavodsk Winter Training Camp 2018 Day 1: Jagiellonian U Contest, Tuesday, January 30, 2018 Problem B. Tribute

    题意:有n个数,除了空集外,它们会形成2^n-1个子集,给你这些子集的和的结果,让你还原原来的n个数. 假设原数是3 5 16, 那么它们形成3 5 8 16 19 21 24, 那么第一轮取出开头的 ...

  2. 【取对数】【哈希】Petrozavodsk Winter Training Camp 2018 Day 1: Jagiellonian U Contest, Tuesday, January 30, 2018 Problem J. Bobby Tables

    题意:给你一个大整数X的素因子分解形式,每个因子不超过m.问你能否找到两个数n,k,k<=n<=m,使得C(n,k)=X. 不妨取对数,把乘法转换成加法.枚举n,然后去找最大的k(< ...

  3. 【BFS】【最小生成树】Petrozavodsk Winter Training Camp 2018 Day 1: Jagiellonian U Contest, Tuesday, January 30, 2018 Problem G. We Need More Managers!

    题意:给你n个点,点带权,任意两点之间的边权是它们的点权的异或值中“1”的个数,问你该图的最小生成树. 看似是个完全图,实际上有很多边是废的.类似……卡诺图的思想?从读入的点出发BFS,每次只到改变它 ...

  4. 【状压dp】Petrozavodsk Winter Training Camp 2018 Day 1: Jagiellonian U Contest, Tuesday, January 30, 2018 Problem E. Guessing Game

    题意:给你n个两两不同的零一串,Alice在其中选定一个,Bob去猜,每次询问某一位是0 or 1.问你最坏情况下最少要猜几次. f(22...2)表示当前状态的最小步数,2表示这位没确定,1表示确定 ...

  5. 【线性基】Petrozavodsk Winter Training Camp 2018 Day 1: Jagiellonian U Contest, Tuesday, January 30, 2018 Problem A. XOR

    题意:给你一些数,问你是否能够将它们划分成两个集合,使得这两个集合的异或和之差的绝对值最小. 设所有数的异或和为S,集合A的异或和为A. 首先,S的0的位对答案不造成影响. S的最高位1,所对应的A的 ...

  6. 【线段树】Petrozavodsk Summer Training Camp 2016 Day 6: Warsaw U Contest, XVI Open Cup Onsite, Sunday, August 28, 2016 Problem H. Hay

    有一些草,一开始高度都是0,它们的生长速率不同. 给你一些单增的日期,在这些日期要将>b的草的部分都割掉,问你每次割掉的部分有多少. 将草的生长速率从大到小排序,这样每次割掉的是一个后缀,而且不 ...

  7. 【计算几何】【极角排序】【二分】Petrozavodsk Summer Training Camp 2016 Day 6: Warsaw U Contest, XVI Open Cup Onsite, Sunday, August 28, 2016 Problem J. Triangles

    平面上给你n(不超过2000)个点,问你能构成多少个面积在[A,B]之间的Rt三角形. 枚举每个点作为直角顶点,对其他点极角排序,同方向的按长度排序,然后依次枚举每个向量,与其对应的另一条直角边是单调 ...

  8. 【枚举】Petrozavodsk Summer Training Camp 2016 Day 6: Warsaw U Contest, XVI Open Cup Onsite, Sunday, August 28, 2016 Problem G. Equation

    f(n)定义为n的十进制表示下所有位的平方和. 问你方程K*f(n)=n在a<=n<=b中的解的个数. 发现f(n)最大不超过2000,可以直接枚举f(n),然后判断K*f(n)的位的平方 ...

  9. 【随机化】Petrozavodsk Summer Training Camp 2016 Day 5: Petr Mitrichev Contest 14, Saturday, August 27, 2016 Problem I. Vier

    给你一个1~n的排列,让你找出4个下标a b c d,满足 (a+b)%n=(c+d)%n (w(a)+w(b))%n=(w(c)+w(d))%n,并且是非平凡解. 发现对于每个数i,找出两个数和为其 ...

随机推荐

  1. Linux I2C(一)之常用的几种实例化(i2c_client ) 【转】

    转自:http://blog.csdn.net/lugandong/article/details/48092397 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 前言 方式 ...

  2. 调用start()与run()的区别

    1.调用start()方法: 通知“线程规划器”当前线程已经准备就绪,等待调用线程对象的run()方法.这个过程就是让系统安排一个时间来调用Thread中的run()方法,使线程得到运行,启动线程,具 ...

  3. python logging system

    官方教程:https://docs.python.org/2/library/logging.html 1.  用法1 import logging import logging.handlers L ...

  4. 在 static table view 中增加date picker 并进行动态高度设定

    http://blog.apoorvmote.com/how-to-pop-up-datepicker-inside-static-cells/

  5. Jmeter接口测试示例

    如果是Web,需要使用badboy进行录制,今天讲的是接口,因此可以不用录制. (1)新建测试计划 (2)添加http请求默认值 (3)添加http信息头管理器 (4)添加token的正则表达式:&q ...

  6. NOIP 2013 day2

    tags: 模拟 贪心 搜索 动态规划 categories: 信息学竞赛 总结 积木大赛 花匠 华容道 积木大赛 Solution 发现如果一段先单调上升然后在单调下降, 那么这一块的代价是最高的减 ...

  7. 禅道BUG管理工具使用链接存储

    http://www.zentao.net/book/zentaopmshelp/259.html

  8. 前后端分离,Vue+restfullframework

    一.准备 修改源: npm config set registry https://registry.npm.taobao.org 创建脚手架: vue init webpack Vue项目名称 #I ...

  9. 机器学习方法(四):决策树Decision Tree原理与实现技巧

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 前面三篇写了线性回归,lass ...

  10. Rotate Image——数学相关

    You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...