hdu5402
2015-08-18 20:47
363 查看
这道题需要仔细想,想全面,虽然题中没坑,但是,对于思维没有好习惯的人来说,到处都是坑,主要就是没有注意到偶数,奇数在这道题中的意义。这道题队友写的前面,我写的后面。
(今天晚上和队友又去吃的明味家,这次吃的是泡菜味的乌冬面,因为米饭太硬,而且米饭比面条更容易胖,
,去买衣服的时候那种靠几率的感觉真的比tle还要糟糕,不过队友吃出了虫子,我吃出了类似于头发的东西,只能说,凭几率来说,能同时出现这种情况很大概率的情况下是因为出现这种情况的概率很大!!!)
2015.8.29:
这道题其实记忆挺深的,构造时的方法出了点问题,问题在于当那个最小值是出现在偶数行,奇数列时,应该考虑到应该是最后一行,但是由于绝对不是第一列,所以那个曲折应该是它和上面哪一行一起完成的;当那个最小值出现在奇数行,偶数列时,应该考虑这一行可能是第一行,但绝对不是最后一行,所以那个曲折应该是它和下面哪一行一起完成的。
(今天晚上和队友又去吃的明味家,这次吃的是泡菜味的乌冬面,因为米饭太硬,而且米饭比面条更容易胖,
,去买衣服的时候那种靠几率的感觉真的比tle还要糟糕,不过队友吃出了虫子,我吃出了类似于头发的东西,只能说,凭几率来说,能同时出现这种情况很大概率的情况下是因为出现这种情况的概率很大!!!)
2015.8.29:
这道题其实记忆挺深的,构造时的方法出了点问题,问题在于当那个最小值是出现在偶数行,奇数列时,应该考虑到应该是最后一行,但是由于绝对不是第一列,所以那个曲折应该是它和上面哪一行一起完成的;当那个最小值出现在奇数行,偶数列时,应该考虑这一行可能是第一行,但绝对不是最后一行,所以那个曲折应该是它和下面哪一行一起完成的。
#include<stdio.h> #include<math.h> #include<string.h> using namespace std; #define INF 0x3f3f3f3f #define N 110 int main() { int n,m; int fi,fj; int temp; while(scanf("%d%d",&n,&m)!=EOF) { long long int num=0; int min=INF; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { scanf("%d",&temp); num=num+temp; if(temp<min&&!((i%2!=0&&j%2!=0)||(i%2==0&&j%2==0))) { min=temp; fi=i; fj=j; } } } if(n%2==0&&m%2==0) num=num-min; printf("%lld\n",num); if(n%2) { for(int i=0;i<n;i++) { for(int j=0;j<m-1;j++) { if(i%2) printf("L"); else printf("R"); } if(i!=n-1){ printf("D"); } } } else if(m%2) { for(int j=0;j<m;j++) { for(int i=0;i<n-1;i++) { if(j%2) printf("U"); else printf("D"); } if(j!=m-1){ printf("R"); } } } else { //printf("%d %d\n",fi,fj); if(!(fi%2)) { for(int i=0;i<=fi-2;i=i+2){ for(int j=1;j<m;j++){ printf("R"); } printf("D"); for(int j=1;j<m;j++){ printf("L"); } printf("D"); } for(int i=0;i<=fj-3;i=i+2){ printf("DRUR"); } printf("DR"); if(fj!=m-1){ for(int i=fj;i<=m-3;i=i+2){ printf("RURD"); } } if((fi+1)!=(n-1)){ printf("D"); for(int i=fi+2;i<=n-2;i=i+2){ for(int i=m-1;i>=1;i--){ printf("L"); } printf("D"); for(int i=0;i<m-1;i++){ printf("R"); } if(i!=n-2){ printf("D"); } } } } else { for(int i=0;i<=fi-2;i=i+2){ for(int j=0;j<m-1;j++){ printf("R"); } printf("D"); for(int j=0;j<m-1;j++){ printf("L"); } printf("D"); } for(int i=0;i<=fj-2;i=i+2){ printf("DRUR"); } printf("RD"); for(int i=fj+1;i<=m-3;i+=2){ printf("RURD"); } if(fi!=(m-1)){ for(int i=fi+1;i<=n-2;i=i+2){ printf("D"); for(int i=m-1;i>=1;i--){ printf("L"); } printf("D"); for(int i=0;i<m-1;i++){ printf("R"); } } } } } printf("\n"); } return 0; }
相关文章推荐
- Android 随手势滑动销毁(finish)Activity
- 苹果手机微信记录恢复最简单的恢复方法
- 树状数组模板
- 用Eclipse编写Android程序的代码智能提示功能
- js 触摸事件 touch
- linux网络编程poll与epoll区别
- UVA11235 Frequent values
- linux下网络编程send,recv,read,write的区别
- 龙与虎PSP汉化版.iso 下載地址:http://www.400gb.com/file/81103616 【龙与虎PSP汉化版】 b-toradorap.cso 下载地址:http://www
- GDOI2016模拟8.18蜡笔
- Java注解
- hdu5402
- IOS应用如何实现64位的支持
- 如何获取assets下和raw下的文件转成string字符串
- HDU 1021.Fibonacci Again【规律】【不可直接求】【8月18】【记录】
- lightoj 1032 - Fast Bit Calculations (数位DP)
- Linux查看CPU和内存使用情况
- 2015Robocup --机器人世界杯(合肥)
- 过河问题
- Android LinearLayout布局