题目链接:

  https://vijos.org/p/1011

题目大意

  给一张N*M的地图(N,M<=500),可从任一点开始沿上下左右走,只能走比当前低的地方。问最长能走多少格。

题目思路:

  【动态规划】

  这题就是滑雪,动态规划。

  将高度排序后从低往高算,当前高度所在的格子上下左右比当前高度低就可以用来更新答案。

 //
//by coolxxx
//
#include<iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<memory.h>
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>
#include<math.h>
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
#define abs(a) ((a)>0?(a):(-(a)))
#define lowbit(a) (a&(-a))
#define sqr(a) (a)*(a)
#define swap(a,b) (a)^=(b),(b)^=(a),(a)^=(b)
#define eps 1e-8
#define J 10000
#define MAX 0x7f7f7f7f
#define PI 3.1415926535897
#define N 504
#define M 500004
using namespace std;
int n,m,lll,ans,cas;
struct xxx
{
int map,x,y;
}a[N*N];
int mm[N][N],d[N][N];
int xx,yy,nowx,nowy;
int dx[]={-,,,};
int dy[]={,,-,};
bool cmp(xxx aa,xxx bb)
{
return aa.map<bb.map;
}
int main()
{
#ifndef ONLINE_JUDGE
// freopen("1.txt","r",stdin);
// freopen("2.txt","w",stdout);
#endif
int i,j,k;
// while(~scanf("%s%d",s,&n))
while(~scanf("%d",&n) && n)
{
scanf("%d",&m);
for(i=;i<=n;i++)
{
for(j=;j<=m;j++)
{
scanf("%d",&a[i*m-m+j].map);
mm[i][j]=a[i*m-m+j].map;
a[i*m+j-m].x=i;
a[i*m-m+j].y=j;
}
}
sort(a+,a++n*m,cmp);
for(i=;i<=n*m;i++)
{
nowx=a[i].x;
nowy=a[i].y;
for(j=;j<;j++)
{
xx=nowx+dx[j];
yy=nowy+dy[j];
if(xx> && xx<=n && yy> && yy<=m)
{
if(mm[xx][yy]<mm[nowx][nowy])
d[nowx][nowy]=max(d[nowx][nowy],d[xx][yy]+);
}
}
ans=max(d[nowx][nowy],ans);
}
printf("%d\n",ans+);
}
return ;
} /*
// //
*/

最新文章

  1. touchstart,touchmove判断手机中滑屏方向
  2. iOS -- MJrefresh
  3. Toast在关闭应用后还显示的解决办法
  4. android webview js alert对话框 不能弹出 解决办法
  5. Redis 数据备份与恢复
  6. mysql技术调优资料整理
  7. 【HDOJ】3088 WORM
  8. android 在EditText中显示表情图片
  9. SQL生成随机字符串
  10. SWT中的Tree中 添加右键弹出菜单
  11. oracle_解锁表_解锁用户
  12. elasticsearch报错expected &lt;block end&gt;, but found BlockMappingStart解决方法
  13. [Err] 1172 - Result consisted of more than one row
  14. Android Studio代码行数统计插件Statistics
  15. webstorm ps
  16. npm install报错Unhandled rejection RangeError: Maximum call stack size exceededill install
  17. TCP/UDP协议简要梳理
  18. 你被美国监控了,美国监控丑闻——&quot;棱镜项目&quot;事件
  19. java多线程(三)
  20. Chrome focus样式

热门文章

  1. c# 二维码 显示
  2. STM32串口通信USART1转USART2问题解决
  3. Android ListView 嵌套 ImageView,如何响应ImageView的点击和长按事件
  4. 共享受限资源,Brian的同步规则
  5. [转]Delphi I/O Errors
  6. applicationContext.xml详解(转)
  7. php基础知识【函数】(3)字符串string
  8. SAE 安装未包含的第三方依赖包
  9. [HOWTO] Install Sphinx for A Script Pro
  10. 舵机的PWM控制学习随笔