COJN 0575 800601滑雪

news/2024/7/7 18:35:13

 

 

800601滑雪
难度级别:B; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B
试题描述

Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子
 1  2  3  4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。

 

输入
输入的第一行表示区域的行数R和列数C,下面是R行,每行有C个整数,代表高度h。
输出
输出最长区域的长度。
输入示例
5 5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
输出示例
25
其他说明
数据范围:1<= R,C<=100,0<=h<=10000.

题解:一眼dp。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<algorithm>
 5 #include<queue>
 6 #include<cstring>
 7 #define PAU putchar(' ')
 8 #define ENT putchar('\n')
 9 using namespace std;
10 const int maxn=100+10,inf=1e8;
11 inline void write(int x);
12 int f[maxn][maxn],n,m,A[maxn][maxn];
13 int mx[]={0,0,-1,1},my[]={-1,1,0,0};
14 int dp(int x,int y){
15     if(f[x][y]>=0)return f[x][y];f[x][y]=0;
16     for(int d=0;d<4;d++){
17         int tx=mx[d]+x,ty=my[d]+y;
18         if(tx>=0&&ty>=0&&tx<n&&ty<m&&A[tx][ty]<A[x][y]){
19             f[x][y]=max(f[x][y],dp(tx,ty)+1);
20         }
21     }
22     return f[x][y];
23 }
24 inline int read(){
25     int x=0,sig=1;char ch=getchar();
26     for(;!isdigit(ch);ch=getchar())if(ch=='-')sig=0;
27     for(;isdigit(ch);ch=getchar())x=10*x+ch-'0';
28     return sig?x:-x;
29 }
30 inline void write(int x){
31     if(x==0){putchar('0');return;}if(x<0)putchar('-'),x=-x;
32     int len=0,buf[15];while(x)buf[len++]=x%10,x/=10;
33     for(int i=len-1;i>=0;i--)putchar(buf[i]+'0');return;
34 }
35 void init(){
36     memset(f,-1,sizeof(f));
37     n=read();m=read();
38     for(int i=0;i<n;i++)
39         for(int j=0;j<m;j++)
40             A[i][j]=read();
41     int ans=-1;
42     for(int i=0;i<n;i++)
43         for(int j=0;j<n;j++)
44             ans=max(ans,dp(i,j));
45     write(ans+1);
46     return;
47 }
48 void work(){
49     return;
50 }
51 void print(){
52     return;
53 }
54 int main(){init();work();print();return 0;}

 

转载于:https://www.cnblogs.com/chxer/p/4672694.html


http://lihuaxi.xjx100.cn/news/271450.html

相关文章

php 爬虫去重,浅谈动态爬虫与去重(续)

作者&#xff1a;Fr1day0keeTeam0x00 前言在 浅谈动态爬虫与去重 中&#xff0c;分享了动态爬虫中触发事件、监控节点变动、URL去重等的实现方法。在接近一年的线上运行与迭代更新过程中&#xff0c;处理了很多bug&#xff0c;也遇到一些有趣的漏抓案例。本文将详细分析几个有代…

GBDT和GNN结合,结果怎么样?

选自OpenReview作者&#xff1a;Sergei Ivanov等机器之心编译编辑&#xff1a;小舟、蛋酱GBDT 和 GNN 方法各有各的优势&#xff0c;现在&#xff0c;来自法国、俄罗斯两家机构的研究者将二者的优势结合起来&#xff0c;探索使用 GBDT 模型处理图结构数据。论文地址&#xff1a…

考考基础部分,谈谈Java集合中HashSet的原理及常用方法

点击上方“方志朋”&#xff0c;选择“设为星标”回复”666“获取新整理的面试文章作者&#xff1a;工匠初心cnblogs.com/LiaHon/p/11257805.html目录 HashSet概述HashSet构造add方法remove方法遍历合计合计先看一下LinkedHashSet在看一下TreeSet总结一. HashSet概述 HashSet是…

通过 Python 代码实现时间序列数据的统计学预测模型

来源 | DeepHub IMBA封图 | CSDN 付费下载于视觉中国 在本篇中&#xff0c;我们将展示使用 Python 统计学模型进行时间序列数据分析。 目标是&#xff1a;根据两年以上的每日广告支出历史数据&#xff0c;提前预测两个月的广告支出金额。原始数据&#xff1a;2017-01-01 到 201…

干货|神经网络及理解反向传播

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达一、人工神经网络简述下面开始说神经网络。注意&#xff0c;当我们说N层神经网络的时候&#xff0c;我们没有把输入层算入&#xff08;因为输入层只是输入数据&#xff09…

python selenium xpath_python+selenium十四:xpath和contains模糊匹配

xpath可以以标签定位&#xff0c;也可以任意属性&#xff1a;如&#xff1a;以input标签定位&#xff1a;driver.find_element_by_xpath("//input[idkw]")如&#xff1a;type属性&#xff1a;driver.find_elements_by_xpath("//input[typetext]")一、xpath…

数据流模式、转换、格式与操作

参照网络请求模型。 A DFD shows what kind of information will be input to and output from the system, how the data will advance through the system, and where the data will be stored. 数据的整合、分离、转换等。 https://www.cnblogs.com/feng9exe/p/8436588.html…

oracle从备份提取归档,Oracle归档模式有备份,丢失数据文件的恢复

1.创建数据库全备份2.test2用户下面构造测试数据3.模拟文件丢失&#xff1a;以sysdba身份登录并关闭数据库&#xff0c;尝试重新启动数据库4.执行恢复&#xff1a;进入RMAN命令行环境从上面可以看到&#xff1a;恢复数据文件7(也可以指定文件名)是从备份集db_bak_15p31koh_1_1中…